[英]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.