我有这样的json:
{
"users":{
"1234":{
"firstname":"Joe",
"lastname":"Smith"
},
"9876":{
"firstname":"Bob",
"lastname":"Anderson"
}
},
"jobs":[
{
"id":"abc",
"location":"store"
},
{
"id":"def",
"location":"factory"
}
]
}
我正在使用 Jackson 解析它,因此我一直在使用以下方法解析响应:readvalue(json, MyCustomClass.class)
MyCustomClass 的样子
public class MyCustomClass{
@JsonProperty("jobs")
ArrayList<Job> jobs;
@JsonProperty("users")
ArrayList<UserMap> usersMap;
}
现在作业完美地解析为 Jobs 对象,但我无法让用户解析,因为他们有动态键。我阅读了有关 JsonAnyGetter/Setter 的信息,并尝试制作映射字符串的 UserMap 对象映射 - > User,如:
public class UserMap {
private HashMap<String,User> usersMap;
@JsonAnySetter
public void add(String key, User user){
usersMap.put(key, user);
}
@JsonAnyGetter
public Map<String, User> getUsersMap(){
return usersMap;
}
}
但这不起作用。我想我可以使用 TypeReference 包装器来做到这一点,但如果这些地图是我返回的唯一类型,我只能想办法做到这一点。由于我得到了不同的类型(用户和工作),是否可以这样做?