我有一个类似这样的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对象映射字符串->用户,例如:
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包装器来完成,但如果那些映射是我唯一得到的类型,我才能想出一种方法来做到这一点。由于我正在获取不同的类型返回(用户和工作),是否可能做到这一点呢?