簡體   English   中英

在Android上使用Gson在JSON中“點”

[英]“Dotting” in JSON using Gson on Android

我正在嘗試使用Android中的Gson解析JSON feed。 我知道JSON有效。 我懷疑這是因為格式如下:

 "Info":[
 {

"Id":"",
"Name":"",
"Description":"",
"Date":""
 }

為了解析這個,我需要“點”入。例如:Info.Name

如何在序列化的DTO中執行此操作?

@SerializedName("Name")
public String name;

@SerializedName("Description")
public String desc;

@SerializedName("Date")
public String date;

我試圖放入“信息”。 在每個serializedName前面,但這也不起作用。 我也知道我的JSON解析方法可以正常工作,因為它在其他地方使用了不同的DTO。 但是在這種解析中,我不必“打點”問題。

有人可以幫忙嗎?

編輯:我已經嘗試了你們發布的所有內容,但沒有任何效果。 錯誤提示:

The JsonDeserializer failed to deserialize json object {"Info":[{".......

第二編輯:我能夠擺脫錯誤,但現在它返回null。 哈哈,現在該死的很沮喪!

由於[] ,Info對象是一個列表。 您必須使用以下代碼對其進行反序列化:

編輯:

public class Info {
    // as in your question
    public String name;
    ...
}
public class Data {
    @SerializedName("Info")
    public List<Info> info;
}

然后,只需使用數據類反序列化json。

我假設您使用的實際JSON有效,因為您提供的示例無效。 在您的JSON示例中,您具有"Info":[但是沒有包含“ Info”屬性的外部對象,這是必須的。 有效的JSON將是:

{
 "Info": [
           {
             "Id":"",
             "Name":"",
             "Description":"",
             "Date":"",
           }
         ]
}

這是一個具有屬性“ Info”的JSON對象,該屬性的值是對象列表。 該對象列表包含一個對象,該對象的屬性為“ Id”,“ Name”,“ Description”和“ Date”,所有屬性均具有空字符串值。

這是有關如何使用GSON解析JSON提要(例如上述JSON)的快速教程:

您將需要一個類來表示列表中的項目:

public class InfoItem {
     public String Id;
     public String Name;
     public String Description;
     public String Date;
     public InfoItem() {}
}

還有一個代表項目列表:

public class InfoItemList extends LinkedList<InfoItem> {
    public InfoItemList() { super() };
}

這種增加的復雜性是因為GSON無法從類數據中獲取通用集合的類型。

並代表整體JSON消息:

public class InfoMessage {
    public InfoItemList Info;
    public InfoMessage() {};
}

然后:

gson.fromJson(jsonString, InfoMessage.getClass());

如果只是反序列化集合:

Type listType = new TypeToken<List<InfoItem>>() {}.getType();
gson.fromJson(jsonString2, listType);

暫無
暫無

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

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