我使用 Jackson, ObjectMapper.readValue(json, Class)。
上一堂课:
Component {
private String name;
private String someField;
private boolean show = true; // if false -> skip it object
}
Run Code Online (Sandbox Code Playgroud)
和可扩展类:
ExtendedComponent extends Component {
private List<Component> components = emptyList();// if all of object in list not showed -> skip field
}
Run Code Online (Sandbox Code Playgroud)
和复杂类:
ComplexComponent extends Component {
ExtendedComponent component;
}
Run Code Online (Sandbox Code Playgroud)
和json:
{
"complexComponent": {
"name": "complexName1",
"show": true,
"someField": "complex",
"extendedComponent": {
"components": [
{
"name": "someName1",
"show": true,
"someField": "someField"
},
{
"name": "someName2",
"show": false,
"someField": "someField"
},
{
"name": "someName3",
"show": true,
"someField": "someField"
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在 ExtendedComponent 中仅获取名称为 someName1 和 someName3 的对象?
如果未显示所有组件,如何获得可为空的 ComplexComponent?
取决于您的 jackson 2 版本
@JsonInclude(Include.NON_DEFAULT)
Run Code Online (Sandbox Code Playgroud)
或者
@JsonInclude(Include.NON_EMPTY)
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩。