簡體   English   中英

從json字符串中提取對象數組,並將其放入ArrayList中?

[英]Extract an array of objects from json string and put them in ArrayList?

我有一個簡單的問題,想知道這里有人可以幫助我如何解析Json字符串並提取所有User並將其放入列表嗎?

請注意 ,“用戶”下面的對象鍵是一個隨機數,可以隨每個響應而變化!

{
    "_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和名稱)的User對象,而忽略其余字段!

傑克遜方法可能看起來像這樣:

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 ...可以這樣完成-

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);      
}

希望能幫助到你.. :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM