2

我是 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

我知道这个例子是字符串数组和整数数组的混合。

我怎么处理这个?

谢谢..

4

1 回答 1

2

问题是您试图将 JSON 转换为字符串数组,而实际上它根本不是字符串数组。

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

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

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

如果这无法解析对象,请尝试传入List.class。这可能会失败,因为它没有为 GSON 提供用于解析嵌套实体的类型信息,但值得一试。

于 2010-11-11T10:41:15.867 回答