我有类似下面的json字符串:
{"values" : [
{ "group":"A"
"rating":2
},
{
"group":"B"
"language":"english"
}
]
}
如您所见,“values”是一个数组,具有不同类型的对象。一种类型可以包含字符串和整数,另一种类型包含字符串和另一个字符串。
我该如何处理?
答案 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。