【发布时间】:2019-10-01 12:53:58
【问题描述】:
我想将复杂的 JSON 转换为 Java 对象。我的问题是“child1”和“child2”包含相同的信息。
我还没有找到在转换 JSON 文件并从单个对象生成它们时自动检测 child1 和 child2 的解决方案。在我目前的解决方案中,孩子总是必须手动存储在课堂上。
这是 JSON 文件:
{
"certs":[
"cert1",
"cert2"
],
"parent":{
"child01":{
"prop1":"value1",
"prop2":[
"value1"
],
"prop3":[
"value1"
]
},
"child02":{
"prop1":"value1",
"prop2":[
"value1"
],
"prop3":[
"value1"
]
}
}
}
这是父类的类:
public class Application {
ArrayList<Object> certs = new ArrayList<Object>();
Parent ParentObject;
// Getter Methods
public Parent getParent() {
return ParentObject;
}
// Setter Methods
public void setParent( Parent parentObject ) {
this.ParentObject = parentObject;
}
}
这是为每个孩子创建一个对象的类:
public class Parent {
Child1 Child1Object;
Child2 Child2Object;
// Getter Methods
public Child1 getChild1() {
return Child1Object;
}
public Child2 getChild2() {
return Child2Object;
}
// Setter Methods
public void setChild1( Child1 child1Object ) {
this.Child1Object = child1Object;
}
public void setChild2( Child2 child2Object ) {
this.Child2Object = child2Object;
}
}
public class Child2 {
private String prop1;
ArrayList<Object> prop2 = new ArrayList<Object>();
ArrayList<Object> prop3 = new ArrayList<Object>();
// Getter Methods
public String getProp1() {
return prop1;
}
// Setter Methods
public void setProp1( String prop1 ) {
this.prop1 = prop1;
}
}
这是孩子的班级:
public class Child1 {
private String prop1;
ArrayList<Object> prop2 = new ArrayList<Object>();
ArrayList<Object> prop3 = new ArrayList<Object>();
// Getter Methods
public String getProp1() {
return prop1;
}
// Setter Methods
public void setProp1( String prop1 ) {
this.prop1 = prop1;
}
}
我不想在父类中单独指定每个对象,因为这意味着如果 JSON 文件使用新子类扩展,我每次都必须手动使用子类扩展类。
当我转换 JSON 文件时,应该自动识别孩子的,并且应该为每个孩子生成一个具有孩子名称(child1,child2)的对象,而无需手动输入名称“child1”和“child2”父类。
【问题讨论】:
-
你应该把
child1,child2放在一个数组中(children)