Convertir les beans imbriqués Java au format aaa.bbb [0] .ccc

introduction

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;
	}
}
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

Convertir les beans imbriqués Java au format aaa.bbb [0] .ccc
Comment convertir la base Java
[Java] Convertir ArrayList en tableau
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream
Convertir un objet ruby au format JSON
[Java] Convertir 1 en N liste en carte
[Android] Convertir le code Java Android en Kotlin
[Java] Convertit un tableau en ArrayList * Attention
Convertir toutes les applications Android (Java) en Kotlin
Convertir des fichiers SVG en fichiers PNG en Java
[* Java *] Je suis allé au JJUG CCC 2017 Automne
[Java] Convertit le code DB en valeur de code à l'aide d'énum
Comment convertir un contrat de solidité en une classe de contrat Java
format google java
[Java] Classe imbriquée
[Java] Introduction à Java
Introduction à Java
Lancez Docker à partir de Java pour convertir des documents Office en PDF
<java> Lire le fichier Zip et le convertir directement en chaîne
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 3
Convertir l'énumération Java et JSON vers et depuis Jackson
Exemple de code pour convertir List en List <String> dans Java Stream
[Java] Convertit les chaînes de caractères en majuscules / minuscules (AOJ⑨ --swap majuscules / minuscules)
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 2
Pour les applications Java, convertissez des documents Word (DOC / DOCX) en PDF
Introduisez RMagick pour convertir les fichiers image existants dans un autre format
Comment convertir un fichier en tableau d'octets en Java
[Kotlin] Convertit ZonedDateTime en chaîne en spécifiant le format
[Java] Convertir JSON en Java et Java en JSON-Comment utiliser GSON et Jackson-