0

我有这种json:

{
 "1": {"id": 1, "first": "mymethod", "second" : [true, true, false]} ,
 "4": {"id": 2, "first": "foo", "second" : [true, true, false]},
 "67": {"id": 67, "first": "bar", "second": [true, true, false]},
 "70": {"id": 70, "first": "foobar", "second" : [true, true, false]}
}

我正在尝试使用 gson(使用 Android)解析它,但由于某种原因我不能。我尝试了很多组合HashMaps<Integer, TheClass> ; TheClass[] ; ArrayList<TheClass>:等等......但我仍然无法做到!

一切,当然,在泛型的情况下使用类型的辅助类:

public class TheClassList extends whatever<TheClass> {}

gson.fromJson(jsonstr, TheClassList.class);

任何帮助将不胜感激?非常感谢。

PS:注意每个对象的“索引”。它是一个整数,但它不是连续的 (1,2,99...)。

非常感谢您的回答。

4

2 回答 2

1

请注意您的 JSON 是如何成为具有四个字段的单个对象的,因为根处有花括号 {} 而不是方括号 []。因此,任何将其解析为列表或数组的尝试都行不通。

假设 TheClass 定义如下:

public class TheClass {

    private int id;
    private String first;
    private boolean[] second; // List<Boolean> would work as well

}

然后可以使用以下内容对其进行解析:

TypeToken<Map<Integer, TheClass>> token = new TypeToken<Map<Integer, TheClass>>() {};
Map<Integer, TheClass> map = new Gson().fromJson(jsonstr, token.getType());
于 2012-10-28T22:08:31.863 回答
0

我可以建议以下库 - http://code.google.com/p/json-simple/downloads/detail?name=json-simple-1.1.1.jar&can=2&q=

于 2012-10-28T20:01:19.380 回答