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