Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 反序列化JSON数组(GSON)中的不同对象_Android_Json_Gson_Json Deserialization - Fatal编程技术网

Android 反序列化JSON数组(GSON)中的不同对象

Android 反序列化JSON数组(GSON)中的不同对象,android,json,gson,json-deserialization,Android,Json,Gson,Json Deserialization,我从服务器获得的getUsers的JSON结果如下所示: { "result": [ { "meta": { "rows": "3" } }, { "items": [ { "id": "1", "name": "Steve", "age": "30" }, { "id": "2",

我从服务器获得的
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
中的对象类型不同,我无法想象有任何包装器类
任何帮助都将不胜感激

举个好例子

换句话说,您可以将json转换为java对象

请使用org.json库

那么比如说

json = new JSONObject(YOUR_JSON).getJSONObject("result");
JSONArray items = data.getJSONArray("items");
String name = items.getJSONObject(0).getString("name");

您可以为将(反)序列化到(来自)数组的类型编写TypeAdapter。您甚至可以将其设置为泛型,这样它就可以处理
Pair-it(反)序列化
Entry
到(从数组)。
免责声明-我没有编写或测试该代码,但它似乎是合法的

如果您只遇到过一次这样的问题(如在您的示例中),您可能不需要麻烦将其设置为泛型,只需为两个不同类的特定对编写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);

(请参阅)

我正在使用改装来反序列化。因此,我创建了一个
Meta
类和一个
UserList
类,其中包含
列表项
,但我无法将它们放入这个奇怪的数组中。那么,这是怎么回事呢?你解决问题了吗?如果是,请选择一个答案并接受它,或者如果您以不同的方式解决了它,请编写您自己的答案。我创建了一个通过JSON的
TypeAdapterFactory
。API更改时,我大约完成了70%。新的API有一个“正常”结构,所以我不再需要自定义解析。但为了解决这个问题,我计划在有空的时候计算出最后30%的收益。我会把结果贴在这里。