【发布时间】:2019-07-26 23:30:39
【问题描述】:
我有一种情况,我试图将 JSON 映射到 Java 对象,该对象由具有动态键的嵌套对象组成。我试图将它映射到 LinkedHashMap 但它没有这样做。
下面是我要映射的 JSON 输出:
{
"success": true,
"item": {
"id": 8903,
"firstLevel": {
"266940": {
"SecondLevel": {
"407617": {
"thirdLevel": {
"2381098": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381134": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
},
"407620": {
"thirdLevel": {
"2381043": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381198": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
}
}
} ,
"266941": {
"SecondLevel": {
"407617": {
"thirdLevel": {
"2381094": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381138": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
},
"407620": {
"thirdLevel": {
"2381047": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381191": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
}
}
}
},
"outcome": "PASS",
"status": "FINISHED"
}
}
我还使用@JsonAnySetter 将动态值映射到 LinkedHashMap 但这也没有帮助。
private Map<String, FirstLevel> firstLevel = new LinkedHashMap<>();
public Map<String, FirstLevel> getFirstLevel() {
return firstLevel;
}
public void setFirstLevel(Map<String, FirstLevel> firstLevel) {
this.firstLevel = firstLevel;
}
@JsonAnySetter
public void setFirstLevel(String key, FirstLevel value) {
this.firstLevel.put(key, value);
}
下面是firstLevel对象的代码
private Map<String, FirstLevel> firstLevel = new LinkedHashMap<>();
public Map<String, FirstLevel> getFirstLevel() {
return firstLevel;
}
public void setFirstLevel(Map<String, FirstLevel> firstLevel) {
this.firstLevel = firstLevel;
}
【问题讨论】:
-
请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。请添加您自己编写的代码。 “没有帮助”不是我们可以提供很多帮助的问题描述。