gpt4 book ai didi

java - Jackson 解析包含对象数组和带有动态键的映射数组的 JSON

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:33 27 4
gpt4 key购买 nike

我有这样的 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 包装器来完成它,但如果这些映射是我要返回的唯一类型,我只能想办法做到这一点。由于我得到了不同的类型(用户和工作),是否可以这样做?

最佳答案

解决方法:

public class MyCustomClass {
@JsonProperty("users")
public LinkedHashMap<String, User> users;

@JsonProperty("jobs")
public ArrayList<Job> jobs;
}

关于java - Jackson 解析包含对象数组和带有动态键的映射数组的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17904845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com