在gson中解析变量类型的对象

时间:2011-06-24 04:17:59

标签: android gson

我有类似下面的json字符串:

{"values" : [
           { "group":"A"
             "rating":2
           },
           {
             "group":"B"
             "language":"english"
           }
         ]
}

如您所见,“values”是一个数组,具有不同类型的对象。一种类型可以包含字符串和整数,另一种类型包含字符串和另一个字符串。

我该如何处理?

3 个答案:

答案 0 :(得分:0)

抱歉,我最初没有注意到你写过“gson”。我不确定你能做到,而且这里是not me saying it

答案 1 :(得分:0)

执行以下操作

List myStrings = new ArrayList();
    myStrings = gson.fromJson(json,myStrings.getClass());

    Iterator myIterator = myStrings.iterator();
    boolean b;
    while(myIterator.hasNext()){
        Object o =myIterator.next();
        b=o instanceof String;

        System.out.println("...."+b);
    }

答案 2 :(得分:0)

我的方法可能是实现多态反序列化解决方案。

除了实现自定义反序列化处理之外,Gson目前还没有简单的多态反序列化机制。下一个版本看起来会提供一个内置的解决方案。

上一篇StackOverflow.com问题与解答(有些例子)关于这个主题:

特定于原始问题,看起来“group”元素将用于区分不同类型。

FWIW,Jackson在很多个月前发布了a built-in solution to this problem