簡體   English   中英

使用Jackson / Gson Java進行JSON解析

[英]JSON Parsing using Jackson/Gson Java

我有以下傑森

{
   "messages":[
      {
         "message":{
            "body":"Foo",
            "username":"XYZ"
         }
      },
      {
         "message":{
            "body":"HI",
            "username":"ABC"
         }
      }
   ],
   "response":{
      "status":200
   },
   "more":true
}

我構建自定義類我的容器類Result包含一個List對象和一個Response對象,其中包含一個狀態和一個布爾值。

public class Message { 

  @SerializedName("body") 
  public String body; 

  @SerializedName("username") 
  public String username; 

  @Override public String toString() { 
    return "Message{" + "body=" + body + ", username=" + username + '}'; 
  } 
}

public class Response { 
  public int status; 
} 

public class SearchResponseST { 
  @SerializedName("messages") 
  public Message[] messages; 
  public Response response; 
  public boolean more;
}

在我的主要課程中,我這樣做:

SearchResponseST response = 
   gson.fromJson(reader, SearchResponseST.class); Message[] results = response.messages; 

如果消除“消息”:並直接啟動數組,則可以使用Gson成功反序列化。

我應該如何用當前結構來解析它?

盡管這不能直接回答您的問題,因為我不使用Gson。 我一直使用org.json.simple包來解析JSSON。 您可以在此處閱讀有關內容: http : //www.mkyong.com/java/json-simple-example-read-and-write-json/只需將JSON放入解析器中,然后獲取所需的數據即可。 就像訪問HashMap(對於JSONObject)或ArrayList(對於JSONArray)一樣,訪問數據。

使用解析代碼進行編輯:

    JSONParser parser = new JSONParser();
    JSONObject obj = (JSONObject) parser.parse(new FileReader("file.txt"));
    JSONArray array = (JSONArray) obj.get("messages");
    for (Object o : array) {
      JSONObject jo =(JSONObject)o;
      JSONObject messageObject = (JSONObject)jo.get("message");
      System.out.println(messageObject.get("body"));
      System.out.println(messageObject.get("username"));
    }

對於這樣的JSON

 {
       "messages":
        [
          {"body": "Foo", "username": "XYZ"   },
          {"body": "HI",  "username": "ABC"  }

        ],
        "response": {"status": 200 },
        "more": true
    }

嘗試將容器對象設計為

Container { List<Message> messages;Response response;boolean more;}

但是對於您發布的JSON,Container對象應為

Container { public HashMap[] messages;  public boolean more;    public Response response; }

暫無
暫無

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

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