@Data
public abstract class DocumentModelApiFieldDefinition implements Serializable {
/**
* 名称
*/
private String name;
/**
* 说明
*/
private String explain = "";
/**
* 类型
*/
private String type;
/**
* 排序
*/
private Integer order = 0;
/**
* 子集
*/
private List<DocumentModelApiFieldDefinition> children;
}
@Data
public class DocumentModelApiResultDefinition extends DocumentModelApiFieldDefinition implements Serializable {
}
模拟生成数据并转JSON字符串 在转回对象
public static void main(String[] args) {
DocumentModelApiResultDefinition definition = new DocumentModelApiResultDefinition();
definition.setExplain("de");
definition.setName("de");
definition.setChildren(new ArrayList<>());
for (int i = 0; i < 10; i++) {
DocumentModelApiResultDefinition d = new DocumentModelApiResultDefinition();
d.setExplain("de" + i);
d.setName("de" + i);
definition.getChildren().add(d);
}
String s = JSON.toJSONString(definition);
DocumentModelApiResultDefinition definition1 = JSONObject.parseObject(s, DocumentModelApiResultDefinition.class);
}
生成的JSON字符串
{
"children":[
{"explain":"de0","name":"de0","order":0},
{"explain":"de1","name":"de1","order":0},
{"explain":"de2","name":"de2","order":0},
{"explain":"de3","name":"de3","order":0},
{"explain":"de4","name":"de4","order":0},
{"explain":"de5","name":"de5","order":0},
{"explain":"de6","name":"de6","order":0},
{"explain":"de7","name":"de7","order":0},
{"explain":"de8","name":"de8","order":0},
{"explain":"de9","name":"de9","order":0}
],
"explain":"de",
"name":"de",
"order":0
}
在进行JSON字符串转对象时 出现问题
children全部转换失败
最终问题 children 的类型 DocumentModelApiFieldDefinition 是个抽象类导致全null