簡體   English   中英

我該如何解析Jackson JSON中帶有數字對象鍵的JSON

[英]how whould I parse JSON with numerical object keys in Jackson JSON

我剛剛開始使用Jackson JSON解析器,我很喜歡它,但是我嘗試解析的JSON對象遇到了問題。

這是我當前的Java代碼:

public class resetPassword {
    private String id;
    private String key1;
    private String key2;


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id= id;
    }

    public String getKey1() {
        return key1;
    }

    public void setKey1(String key1) {
        this.key1= key1;
    }

    public String getKey2() {
        return key2;
    }

    public void setKey2(String key2) {
        this.key2= key2;
    }
}

我將如何在Jackson中解析如下內容:

{
   "1":{
      "key1":"val",
      "key2":"val"
   },
   "2":{
     "key":"val",
     "key":"val"
     }, .. etc
}

任何與此有關的幫助都將大大減少

根據注釋中的信息,我想您需要將遍歷與數據綁定結合起來。

首先,使用遍歷 ,使用{"key1": ..., "key2": ...}獲取JsonNode對象。 偽代碼(未經測試):

    ObjectMapper mapper = new ObjectMapper();
    JsonNode root = mapper.readTree(genreJson);
    Iterator<String> fieldNames = root.fieldNames();
    while (fieldNames.hasNext()) {
        String fieldName = fieldNames.next();
        JsonNode node = root.get(fieldName);
        // now you should have {"key1": ...} in node
    }

然后對找到的每個節點使用數據綁定

ResetPassword item = mapper.readValue(node, ResetPassword.class);

如果您需要快速的方法,可以將其設置為Map

ObjectMapper mapper = new ObjectMapper();

Map<String, Map<String, String>> map = mapper.readValue(br, Map.class);
System.out.println(map);

您的map現在將是:

{1={key1=val, key2=val}, 2={key1=val, key2=val}}

您可以遍歷Map(s)並相應地設置ResetPassword

PS: br是我的BufferedReader實例,它讀取放置在numeric.txtjson

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("numeric.txt"),    "UTF-8"));

暫無
暫無

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

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