java - 如何将下面的 Json 转换为 Java Pojo 类?
问题描述
请在 Json 下方查看。我想将其转换为 POJO 类。
我已经尝试过以下课程
@Data
public class Root {
@JsonProperty("0") // Dont want to pass like this. it should be single list and index is the key of that array
public List<Request> list;
@JsonProperty("1")
public List<Request> list1;
@JsonProperty("2")
public List<Request> list2;
@Data
private class Request {
int id;
String title;
int level;
List<Request> children;
@JsonProperty("parent_id")
int parentId;
}
}
{
"0": [
{
"id": 12123,
"title": "sfsdf",
"level": 0,
"children": [
],
"parent_id": null
}
],
"1": [
{
"id": 213,
"title": "d",
"level": 1,
"children": [
],
"parent_id": 1212312
},
{
"id": 3232,
"title": "dfsdf",
"level": 1,
"children": [
],
"parent_id": 42
},
{
"id": 234,
"title": "tder",
"level": 1,
"children": [
],
"parent_id": 122
}
],
"2": [
{
"id": 452,
"title": "Blll",
"level": 2,
"children": [
],
"parent_id": 322
},
{
"id": 123,
"title": "trrr",
"level": 11,
"children": [
],
"parent_id": 1221
},
{
"id": 33,
"title": "sdfw",
"level": 2123,
"children": [
],
"parent_id": 10
}
]
}
解决方案
示例,public
为简单起见使用字段:
class Root {
@JsonAnySetter
public Map<String, List<Request>> lists = new LinkedHashMap<>();
}
class Request {
public int id;
public String title;
public int level;
public List<Request> children;
@JsonProperty("parent_id")
public Integer parentId; // 'Integer', not 'int', since it can be null
}
测试
ObjectMapper mapper = new ObjectMapper();
Root root = mapper.readValue(new File("test.json"), Root.class);
for (Entry<String, List<Request>> entry : root.lists.entrySet()) {
System.out.println(entry.getKey() + ":");
for (Request request : entry.getValue()) {
System.out.println(" id=" + request.id +
", title=" + request.title +
", level=" + request.level +
", children=" + request.children +
", parentId=" + request.parentId);
}
}
输出
0:
id=12123, title=sfsdf, level=0, children=[], parentId=null
1:
id=213, title=d, level=1, children=[], parentId=1212312
id=3232, title=dfsdf, level=1, children=[], parentId=42
id=234, title=tder, level=1, children=[], parentId=122
2:
id=452, title=Blll, level=2, children=[], parentId=322
id=123, title=trrr, level=11, children=[], parentId=1221
id=33, title=sdfw, level=2123, children=[], parentId=10
推荐阅读
- json - 如何将 Pandas 数据输出到 JSON,并在数组中包含特定列
- c# - MVVM 中的可见性转换器未更新
- sql - Oracle SQL:根据多行条件拆分组
- django - 保存后获取模型字段
- docker - 如何在 docker 构建过程中使用环境变量获取脚本?
- image - 使用一组 TImage 来查找特定的 Image
- javascript - 更新集群中的功能后如何更新地图?
- php - PHPunit Drupal8:“节点”实体类型不存在
- spring - 如何使用 Spring 设置不同的安全级别
- python - 如何在 Windows 上使用多个进程为 Flask 应用程序提供服务