如何使用此示例中的GSON解码JSON?

时间:2010-11-11 10:24:29

标签: java json gson

我是GSON的新手。这是我的例子

[["a","b","c"],[1,2,3],[4,5,6]]

我想拆分成数组。我试试这段代码

String test = "[ [\"a\",\"b\",\"c\"],[1,2,3]]";
String[] column = gson.fromJson(test, String[].class);

它不起作用......并且得到错误。

The JsonDeserializer StringTypeAdapter failed to deserialized json object ["a","b","c"] given the type class java.lang.String
com.google.gson.JsonParseException: The JsonDeserializer StringTypeAdapter failed to deserialized json object ["a","b","c"] given the type class java.lang.String

我知道这个例子是String数组和Integer数组的混合。

我如何处理这个?

谢谢..

1 个答案:

答案 0 :(得分:2)

问题是你正在尝试将JSON转换为字符串数组,实际上它根本不是字符串数组。

由于数组元素没有属性名,因此无法创建普通的Java类来存储它。因此,它必须被反序列化为某种类型的2D数组。鉴于某些元素是字符串,有些是整数,最具体的常见超类是Object

因此,唯一可行的数组类是Object[][].class。我不知道GSON是否支持异构2D数组,但试试这个并找出:

String[] column = gson.fromJson(test, Object[][].class);

如果此方法无法解析,请尝试传入List.class。这将可能失败,因为它为GSON提供了无法解析嵌套实体的类型信息,但值得一试。