我有一个简单的问题,并且想知道这里是否有人可以帮我解析如何解析Json字符串并提取所有用户并将其放入List中?
注意直接在“用户”下的对象键是一个随机数,可随每个响应而变化!
{
"_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": {}
}
理想情况下,利用Jackson Json或Gson会很好。
此外,我只想构建具有两个字段(id& name)的User对象,并忽略其余字段!
答案 0 :(得分:3)
杰克逊的态度可能如下:
ObjectMapper om = new ObjectMapper();
JsonNode node = om.readTree(input);
List<JsonNode> users = node.findValues("user");
从这里,您可以直接从JsonNode
实例中检索值,例如:
for (JsonNode jsonNode : users) {
System.out.println(jsonNode.get("name"));
System.out.println(jsonNode.get("id"));
}
或转换为POJO:
for (JsonNode user : users) {
User pojo = om.treeToValue(user, User.class);
System.out.println(pojo.id);
System.out.println(pojo.name);
}
假设存在类似于以下内容的POJO:
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
public String name, id;
}
答案 1 :(得分:2)
你必须解析json ......这可以像 -
那样完成JSONObject json=new JSONObject(response);
JSONObject json2=json.getJSONObject("users");
Iterator keys = json2.keys();
while(keys.hasNext()) {
String key = (String)keys.next();
JSONObject json3=json2.getJSONObject(key);
ArrayList<User> list=new ArrayList<>();
JSONObject userjson=json3.getJSONObject("user");
User user = new User();
String id=userjson.getString("id");
String name=userjson.getString("name");
user.setId(id);
user.setName(name);
list.add(user);
}
希望它有所帮助.. :)