使用GSON将对象的“列表”(作为对象)解析为JSON中的整数对象(hashmap)

时间:2012-10-28 19:57:18

标签: java android json parsing gson

我有这种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 ......)。

非常感谢您的回答。

2 个答案:

答案 0 :(得分: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());

答案 1 :(得分:0)

相关问题