pat*_*pat 7 java android json jackson
我有这样的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包装器做到这一点,但如果这些地图是我回来的唯一类型,我只能想到一种方法.由于我得到不同的类型(用户和工作)是否可以这样做?
pat*_*pat 10
解:
public class MyCustomClass {
    @JsonProperty("users")
    public LinkedHashMap<String, User> users;
    @JsonProperty("jobs")
    public ArrayList<Job> jobs;
}