英文:
Build Complex JSON payload from java classes
问题
以下是从Java类创建的JSON负载,只有一个条件,即Subgroup1可以为null,意味着组可能有也可能没有Subgroup1。不确定如何完成。非常感谢您的帮助!如果需要,我可以更改这些类。
{
"data": [
{
"id": "1",
"name": "ab",
"children": [
{
"id": "1",
"name": "xyz",
"children": [
{
"id": "1",
"name": "opl"
}
]
}
]
},
{
"id": "2",
"name": "cd",
"children": [
{
"id": "1",
"name": "ijk",
"children": [
{
"id": "1",
"name": "rty"
},
{
"id": "2",
"name": "wsc"
}
]
},
{
"id": "2",
"name": "lmn",
"children": [
{
"id": "1",
"name": "qaz"
},
{
"id": "2",
"name": "poi"
}
]
},
{
"id": "3",
"name": "opq",
"children": [
{
"id": "1",
"name": "edf"
},
{
"id": "2",
"name": "bhgga"
}
]
}
]
},
{
"id": "3",
"name": "ef",
"children": [
{
"id": null,
"name": null,
"children": [
{
"id": "2",
"name": "ijyuht"
}
]
}
]
}
]
}
您有3个不同的Java类来映射对象。
Data.class
public class Data {
private Long id;
private String name;
private List<Subgroup1> children;
}
Subgroup1.class
public class Subgroup1 {
private Long id;
private String name;
private List<Subgroup2> children;
}
Subgroup2.class
public class Subgroup2 {
private Long id;
private String name;
}
英文:
I would like to create following json payload from the java classes. Only one condition is there, Subgroup1 can be null, meaning group may/may not have subgroup1. Not sure how can it be done. Any help would be highly appreciated. Thanks in advance! I can change the classes if needed.
{
"data" : [
{
"id": "1",
"name": "ab",
"children": [
{
"id": "1",
"name": "xyz",
"children": [
{ "id": "1",
"name": "opl"
} ]
}
]
},
{
"id":" 2",
"name": "cd",
"children": [
{
"id": "1",
"name": "ijk",
"children": [
{ "id": "1",
"name": "rty"},
{ "id": "2",
"name": "wsc"
} ]
},
{
"id": "2",
"name": "lmn",
"children": [
{ "id": "1",
"name": "qaz"},
{ "id": "2",
"name": "poi"
} ]
},
{
"id": "3",
"name": "opq",
"children": [
{ "id": "1",
"name": "edf"},
{ "id": "2",
"name": "bhgga"
} ]
}
]
},
{
"id": "3",
"name": "ef",
"children": [
{
"id": null,
"name": null,
"children": [
{ "id": "2",
"name": "ijyuht"
} ]
}
]
}
]
}
I have 3 different java classes to map objects.
Data.class
public class Data {
private Long id;
private String name;
private List<Subgroup1> children;
}
Subgroup1.class
public class Subgroup1 {
private Long id;
private String name;
private List<Subgroup2> children;
}
Subgroup2.class
public class Subgroup2 {
private Long id;
private String name;
}
答案1
得分: 0
创建如下的类结构:
public class MainClass {
private List<Datum> data;
}
public class Datum {
private List<Child> children;
private String id;
private String name;
}
public class Child {
private List<Child> children;
private String id;
private String name;
}
以下是你可以在Java中使用的格式,这只是一种你可以以多种方式完成的方式,我已经用简单的方式解释了。
MainClass mainClass = new MainClass();
List<Child> level2List = new ArrayList<>();
Child level2Child = new Child();
level2Child.setName("opl");
level2Child.setId("1");
level2List.add(level2Child);
List<Child> childList = new ArrayList<>();
Child child = new Child();
child.setChildren(level2List);
child.setId("1");
child.setName("xyz");
childList.add(child);
Datum datum = new Datum();
datum.setChildren(childList);
datum.setId("1");
datum.setName("ab");
List<Datum> datumList = new ArrayList<>();
datumList.add(datum);
mainClass.setData(datumList);
System.out.println(new Gson().toJson(mainClass));
英文:
Create Classes structure as below:
public class MainClass {
private List<Datum> data;
}
public class Datum {
private List<Child> children;
private String id;
private String name;
}
public class Child {
private List<Child> children;
private String id;
private String name;
}
below format you can use in Java, its just a way you can do it in multiples way, as i have expained in a easy way.
MainClass mainClass = new MainClass();
List<Child> level2List = new ArrayList<>();
Child level2Child = new Child();
level2Child.setName("opl");
level2Child.setId("1");
level2List.add(level2Child);
List<Child> childList = new ArrayList<>();
Child child = new Child();
child.setChildren(level2List);
child.setId("1");
child.setName("xyz");
childList.add(child);
Datum datum = new Datum();
datum.setChildren(childList);
datum.setId("1");
datum.setName("ab");
List<Datum> datumList = new ArrayList<>();
datumList.add(datum);
mainClass.setData(datumList);
System.out.println(new Gson().toJson(mainClass));
专注分享java语言的经验与见解,让所有开发者获益!
评论