从 json 字符串中提取对象数组并将它们放入 ArrayList?
Extract an array of objects from json string and put them in ArrayList?
我有一个简单的问题,想知道这里是否有人可以帮助我如何解析 Json 字符串并提取所有用户并将其放入列表中?
注意Users正下方的对象键是一个随机数,可以随每次响应而变化!
{
"_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 和名称)的用户对象,而忽略其余字段!
您必须解析 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);
}
希望对您有所帮助..:)
Jackson 方法可能如下所示:
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;
}
我有一个简单的问题,想知道这里是否有人可以帮助我如何解析 Json 字符串并提取所有用户并将其放入列表中?
注意Users正下方的对象键是一个随机数,可以随每次响应而变化!
{
"_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 和名称)的用户对象,而忽略其余字段!
您必须解析 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);
}
希望对您有所帮助..:)
Jackson 方法可能如下所示:
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;
}