Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
Java GSON 2.0+-反序列化和解析任意字段_Java_Android_Json_Gson - Fatal编程技术网

Java GSON 2.0+-反序列化和解析任意字段

Java GSON 2.0+-反序列化和解析任意字段,java,android,json,gson,Java,Android,Json,Gson,我从一个web服务中提取一个JSON字符串,其样式如下所示。根据get中发送的内容,显示的id的JSON字符串字段是任意的。我在gson中介绍了一些示例,其中讨论了如何获取json并将其运行到一个对象中,以处理任意字段值。 及 我的问题是,一旦我创建了对象以提取特定字段,我该如何处理它。我有一个自定义类来从对象id、名称、概要文件等内部提取值,但我不知道如何引用这两个值,或者如何将信息从对象提取到arraylist或类似的东西中 { "415943": { "id": 4159

我从一个web服务中提取一个JSON字符串,其样式如下所示。根据get中发送的内容,显示的id的JSON字符串字段是任意的。我在gson中介绍了一些示例,其中讨论了如何获取json并将其运行到一个对象中,以处理任意字段值。 及

我的问题是,一旦我创建了对象以提取特定字段,我该如何处理它。我有一个自定义类来从对象id、名称、概要文件等内部提取值,但我不知道如何引用这两个值,或者如何将信息从对象提取到arraylist或类似的东西中

{
   "415943": {
      "id": 415943,
      "name": "Zoro Roronoa",
      "profileIconId": 580,
      "revisionDate": 1390848107000,
      "summonerLevel": 30
   },
   "19758386": {
      "id": 19758386,
      "name": "Zoro",
      "profileIconId": 535,
      "revisionDate": 1390855130000,
      "summonerLevel": 30
   }
}
Main.java

Gson gson = new Gson();
Object o = gson.fromJson(jsonStatsString, Object.class);

您可以使用JSON中包含映射字段的自定义对象,并将其转换为列表:

List<MyObject> items =
                gson.fromJson(json, new TypeToken<List<MyObject>>() { }.getType());

我一直得到一个错误,应该是BEGIN_数组,但在第1行第2列是BEGIN_对象,因为JSON看起来不是数组,而是包含多个对象的对象。我只需要获取返回的字符串并用[]替换外部{},这样它就是一个数组。那么它应该可以工作了。我没有使用list对象,但是你答案中的TypeToken部分正是我想要的。