我从服务器获取的getUsers
的JSON结果如下所示:
{
"result": [
{
"meta": {
"rows": "3"
}
},
{
"items": [
{
"id": "1",
"name": "Steve",
"age": "30"
},
{
"id": "2",
"name": "Mary",
"age": "29"
},
{
"id": "3",
"name": "Bill",
"age": "58"
}
]
}
]
}
如何在我的Android应用程序中使用GSON对其进行反序列化(我使用改造)?
由于result
中的对象类型不同,我无法想象任何包装类
任何帮助将不胜感激!
答案 0 :(得分:0)
其他方式,您可以将json转换为java对象
请使用org.json库http://www.json.org/java/index.html
然后,例如
json = new JSONObject(YOUR_JSON).getJSONObject("result");
JSONArray items = data.getJSONArray("items");
String name = items.getJSONObject(0).getString("name");
答案 1 :(得分:0)
您可以为将(de)序列化为(from)数组的类型编写TypeAdapter。您甚至可以将其设为通用,因此它可以使用类似Pair<A, B>
的类型。以下是非泛型类型的示例:https://github.com/cakoose/json-tuple-databinding-examples/blob/master/java/src/GsonEntryCustomizer.java - 它(de)将Entry
序列化为(来自数组)。
免责声明 - 我没有编写或测试过该代码,但似乎是合法的。
如果你只遇到过一次这样的问题(就像在你的例子中一样),你可能不会把它变成通用的,只需为你特定的2对不同的类写一下TypeAdapter。阅读代码非常简单:
in.beginArray();
SomeClass1 info1 = gson.getAdapter(SomeClass1.class).read(in);
SomeClass2 info2 = gson.getAdapter(SomeClass2.class).read(in);
in.endArray();
return new SomeContainerClass(info1, info2);