服务器当前返回一个类似于下面给出的 json 的 json,它包含一个名为的字段,data它是一个数组数组,每个数组有多个对象,每个对象都有一个名为item_type. 该键item_type允许我准确地确定它是什么类型的对象,以便我可以在 java 中相应地转换它,但我无法读取该item_type字段。
{
"page":1,
"data":[
[
{
"id":1,
"name":"xyz",
"item_type":1
}
],
[
{
"cid":1,
"item_type":2
}
],
[
{
"item":1,
"item_type":3
}
]
]
}
改装界面是这样的
@GET("Search")
Observable<SearchResults> search(@Query(ParamsHolder.GET_QUERY)
String query, @Query(ParamsHolder.GET_PAGE) int page);
SearchResults类看起来像这样
public class SearchResults {
int page;
List<List<Object>> data;
public int getPage() {
return page;
}
public List<List<Object>> getData() {
return data;
}
}
我能够很好地获取数据,但我需要读取每个列表中的对象。为此,我使用了以下代码
public class SearchItem {
int item_type;
public int getItemType() {
return item_type;
}
}
List<List<Object>> data = objects.getData();
for (int i = 0; i < data.size(); i++) {
List<Object> list = data.get(i);
for (int j = 0; j < list.size(); j++) {
SearchItem item = (SearchItem) list.get(i);
Log.d("search", " json=" + list.get(j).toString());
Log.d("search", " item=" + item.toString() + " type=" + item.getItemType());
}
}
我创建了一个虚拟SearchItem类,我认为它会让我对类型进行Object类型转换,这样我就可以阅读item_type它会让我确切地知道这是对象的类型。
它抛出一个错误com.google.gson.internal.LinkedTreeMap cannot be cast to in.example.models.SearchItem
这里的最终目标是能够将数组中的每个对象转换为正确的类型,而我能做到这一点的唯一方法是读取item_type对象中的键
小怪兽爱吃肉
慕容森
相关分类