以前可能会在这里问类似的问题,但我没有运气,我想知道如何从下面的 json 字符串中提取特定对象,例如 user
,然后构造一个 ArrayList
.然而,有一个问题,Users
直接下的属性之一是一个随机数,可以是任何数字!!!
这是我的 json 字符串的样子:
<code>{
"_links": {
},
"count": {
},
"users": {
"123321": { //*Is a random number which can be any number
"_links": {
},
"user": {
"id": "123321",
"name": "...",
"age": "...",
"address": ""
..
}
},
"456654": {
"_links": {
},
"user": {
"id": "456654",
"name": "...",
"age": "...",
"address": ""
...
}
}
...
},
"page": {
}
}
</code>
我想将其转换为的java对象是:
@JsonIgnoreProperties(ignoreUnknown = true) // Ignore any properties not bound here
public class User {
private String id;
private String name;
//setter:getter
}
注意:转换应仅考虑这两个字段 (id,name),并忽略 json 响应中的其余字段 user:{ }
对象。
理想情况下,我希望最终得到这样的列表:
List<User> users = resulted json transformation should return a list of users!!
知道我该如何做到这一点吗?最好使用 Jackson JSON Parser/或者 GSON?
最佳答案
由于用户 key 是随机的,因此您显然无法将它们映射到命名的 Java 字段。相反,您可以将顶级对象解析为映射并手动提取用户对象。
public class UserWrapper {
private User user;
public User getUser() { return user; }
}
public class Root {
private Map<String, UserWrapper> users;
public List<User> getUsers() {
List<User> usersList = new ArrayList();
for (String key : map.keySet()) {
UserWrapper wrapper = map.get(key);
usersList.add(wrapper.getUser());
}
return userList;
}
}
Root root = parseJson();
List<User> users = root.getUsers()
希望有帮助!
关于java - 如何从来自 api 响应的 json 字符串构造对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250214/