Konvertieren Sie verschachtelte Java-Beans in das Format aaa.bbb [0] .ccc

Einführung

Bean0.java


@Data
public class Bean0 {
	private List<Bean1> listBean1;
}

Bean1.java


@Data
public class Bean1 {
	private String id;
	private String name;
	private List<String> list;
	private Bean2 bean2;
	private List<Bean2> listBean2;
}

Bean1.java


@Data
public class Bean2 {
	private String count;
	private List<String> hogeList;
}

Bean1Test.java


@SpringBootTest
public class Bean1Test {


	@Test
	public void hoge() throws IllegalArgumentException, IllegalAccessException {
		Bean0 b0 = new Bean0();
		List<Bean1> list = new ArrayList<Bean1>();
		for(int i = 0; i <= 2; i++) {
			Bean1 b1 = new Bean1();

			b1.setId("" + i);
			b1.setName("Hogetaro" + i);
			b1.setList(new ArrayList<String>(Arrays.asList("aaa", "bbb", "ccc")));

			Bean2 b2 = new Bean2();
			b2.setCount("10" + i);
			b2.setHogeList(Arrays.asList("1" + i));

			b1.setBean2(b2);

			List<Bean2> listb2 = new ArrayList<Bean2>();
			Bean2 b21 = new Bean2();
			b21.setCount("101" + i);
			b21.setHogeList(Arrays.asList("11" + i, "12" + i));
			listb2.add(b21);

			Bean2 b22 = new Bean2();
			b22.setCount("102" + i);
			b22.setHogeList(Arrays.asList("101" + i, "1001" + i, "10001" + i));
			listb2.add(b22);

			b1.setListBean2(listb2);
			list.add(b1);
		}
		b0.setListBean1(list);

		try {
			List<String> ret = getFieldNameValue(b0);
			for(String str: ret) {
				System.out.println(str);
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

	private List<String> getFieldNameValue(Object obj) throws IllegalArgumentException, IllegalAccessException {
		List<String> list = new ArrayList<String>();
        Field[] fields = obj.getClass().getDeclaredFields();
        for(Field f : fields) {
        	f.setAccessible(true);
        	Object val = f.get(obj);
            if(f.getType().equals(String.class)) {
                list.add(f.getName() + ":" + val);
            }
            else if(f.getType().equals(List.class)) {
            	int i = 0;
            	int j = 0;
            	if(null == f.get(obj)) continue;
        		for(Object obj2: (List<Object>)val) {
        			if(obj2.getClass().equals(String.class)) {
        				list.add(f.getName() + "[" + i++ + "]:" + obj2.toString());
        			}
        			else {
        				List<String> list2 = getFieldNameValue(obj2);
        				List<String> list3 = new ArrayList<String>();
        				for(String str2 : list2) {
        					list3.add(f.getName() + "[" + j + "]" + "." + str2);
        				}
        				list.addAll(list3);
        				j++;
        			}
            	}
            } else {
            	List<String> list2 = getFieldNameValue(val);
				List<String> list3 = new ArrayList<String>();
				for(String str2 : list2) {
					list3.add(f.getName() + "." + str2);
				}
				list.addAll(list3);
            }
        }
        return list;
	}
}

--JUnit Ausführungsergebnis

listBean1[0].id:0
listBean1[0].name:Hogetaro 0
listBean1[0].list[0]:aaa
listBean1[0].list[1]:bbb
listBean1[0].list[2]:ccc
listBean1[0].bean2.count:100
listBean1[0].bean2.hogeList[0]:10
listBean1[0].listBean2[0].count:1010
listBean1[0].listBean2[0].hogeList[0]:110
listBean1[0].listBean2[0].hogeList[1]:120
listBean1[0].listBean2[1].count:1020
listBean1[0].listBean2[1].hogeList[0]:1010
listBean1[0].listBean2[1].hogeList[1]:10010
listBean1[0].listBean2[1].hogeList[2]:100010
listBean1[1].id:1
listBean1[1].name:Hogetaro 1
listBean1[1].list[0]:aaa
listBean1[1].list[1]:bbb
listBean1[1].list[2]:ccc
listBean1[1].bean2.count:101
listBean1[1].bean2.hogeList[0]:11
listBean1[1].listBean2[0].count:1011
listBean1[1].listBean2[0].hogeList[0]:111
listBean1[1].listBean2[0].hogeList[1]:121
listBean1[1].listBean2[1].count:1021
listBean1[1].listBean2[1].hogeList[0]:1011
listBean1[1].listBean2[1].hogeList[1]:10011
listBean1[1].listBean2[1].hogeList[2]:100011
listBean1[2].id:2
listBean1[2].name:Hogetaro 2
listBean1[2].list[0]:aaa
listBean1[2].list[1]:bbb
listBean1[2].list[2]:ccc
listBean1[2].bean2.count:102
listBean1[2].bean2.hogeList[0]:12
listBean1[2].listBean2[0].count:1012
listBean1[2].listBean2[0].hogeList[0]:112
listBean1[2].listBean2[0].hogeList[1]:122
listBean1[2].listBean2[1].count:1022
listBean1[2].listBean2[1].hogeList[0]:1012
listBean1[2].listBean2[1].hogeList[1]:10012
listBean1[2].listBean2[1].hogeList[2]:100012

Recommended Posts

Konvertieren Sie verschachtelte Java-Beans in das Format aaa.bbb [0] .ccc
So konvertieren Sie Java Base
[Java] Konvertiert ArrayList in Array
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
Konvertieren Sie das Ruby-Objekt in das JSON-Format
[Java] Konvertiere 1 in N Liste in Karte
[Android] Konvertieren Sie Android Java-Code in Kotlin
[Java] Konvertieren Sie ein Array in ArrayList * Achtung
Konvertieren Sie alle Android-Apps (Java) in Kotlin
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
[* Java *] Ich ging zum JJUG CCC 2017 Herbst
[Java] Konvertieren Sie DB-Code mit enum in einen Codewert
So konvertieren Sie einen Soliditätsvertrag in eine Java-Vertragsklasse
Google Java-Format
[Java] Verschachtelte Klasse
[Java] Einführung in Java
Einführung in Java
Starten Sie Docker von Java aus, um Office-Dokumente in PDF zu konvertieren
<java> Zip-Datei lesen und direkt in String konvertieren
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 3
Konvertieren Sie Java Enum Enumeration und JSON von und nach Jackson
Beispielcode zum Konvertieren von List in List <String> in Java Stream
[Java] Konvertieren Sie Zeichenfolgen in Groß- / Kleinschreibung (AOJ⑨ - Swap in Groß- / Kleinschreibung)
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 2
Java-Anwendungen konvertieren Word-Dokumente (DOC / DOCX) in PDF
Führen Sie RMagick ein, um vorhandene Bilddateien in ein anderes Format zu konvertieren
So konvertieren Sie eine Datei in ein Byte-Array in Java
[Kotlin] Konvertieren Sie ZonedDateTime in String, indem Sie das Format angeben
[Java] Konvertieren Sie JSON in Java und Java in JSON-How to use GSON and Jackson-