![](/img/trans.png)
[英]Android JSON Exception - JSONArray cannot be converted to JSONObject
[英]Gson exception while reading Json with JsonArray and JsonObject
我正在嘗試使用Gson調用json響應。 但是它在同一位置包含一個JSONArray對象,並且在同一層次結構中包含一個JSONObject,這里我的json響應是:
"{"SERVICES":{"Results":[{"Items":{"Item":[{"@Id":"10"},{"@Id":"12"}]}},
{"Items":{"Item":{"@Id":"13"}}}]}}"
在這個層次結構中
{"SERVICES":
{"Results":
[
{"Items":
{"Item":
[
{"@Id":"10"},
{"@Id":"12"}
]
}
},
{"Items":
{"Item":
{"@Id":"13"}
}
}
]
}
}
在這里,第一個“ Item”元素包含一個數組,第二個是一個對象。 下面是我的代碼,
import java.util.Iterator;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
public class Next {
public static void main(String args[]){
String jsonData = Services.getJsonData(); //{"SERVICES":{"Results":[{"Items":{"Item":[{"@Id":"10"},{"@Id":"12"}]}}, {"Items":{"Item":{"@Id":"13"}}}]}}
TResponseInfo responseInfo = new Gson().fromJson(jsonData, TResponseInfo.class);
}
class TResponseInfo{
TServicesInfo SERVICES;
}
class TServicesInfo {
List<TResultsInfo> Results;
}
class TResultsInfo {
TItemsInfo Items;
}
class TItemsInfo {
List<TItemInfo> Item;
//TItemInfo Item;
}
class TItemInfo {
@SerializedName("@Id")
int Id;
}
在這里,我得到了例外:
給定類型java.util.List,無法反序列化json對象{“ @Id”:“ 13”}
和消息:這不是JSON數組。
更新:您的Json似乎是錯誤的,您的Item:
是一個數組,但是JSON中的seconds字段是一個對象。
首先,您有:
"Item":
[
{"@Id":"10"},
{"@Id":"12"}
]
那么你有:
"Item":
{"@Id":"13"}
應該是:
"Item":
[
{"@Id":"13"}
]
使用Gson可能很難管理泛型。 我建議您改用數組。 例如這樣的事情:
class TResponseInfo{
TServicesInfo SERVICES;
}
class TServicesInfo {
TResultsInfo[] Results; // an array instead of a generic List
}
class TResultsInfo {
TItemsInfo Items;
}
class TItemsInfo {
TItemInfo[] Item; // an array instead of a generic List
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.