我是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数组的混合。
我如何处理这个?
谢谢..
答案 0 :(得分:2)
问题是你正在尝试将JSON转换为字符串数组,实际上它根本不是字符串数组。
由于数组元素没有属性名,因此无法创建普通的Java类来存储它。因此,它必须被反序列化为某种类型的2D数组。鉴于某些元素是字符串,有些是整数,最具体的常见超类是Object
。
因此,唯一可行的数组类是Object[][].class
。我不知道GSON是否支持异构2D数组,但试试这个并找出:
String[] column = gson.fromJson(test, Object[][].class);
如果此方法无法解析,请尝试传入List.class
。这将可能失败,因为它为GSON提供了无法解析嵌套实体的类型信息,但值得一试。