【发布时间】:2015-02-14 14:11:09
【问题描述】:
我尝试使用 Gson 库反序列化 json 字符串; 我有以下课程
class Foo {
int Id;
String Name;
}
以及下面的json字符串
{response: [123, { id: 1, name: 'qwerty'}, { id: 2, name: 'asdfgh'}, ]}
我尝试反序列化这个字符串
Gson gson = new Gson();
Foo[] res = gson.fromJson(jsonStr, Foo[].class);
但我失败了,因为这个字符串不包含纯 json 数组,而是包含字段“响应”的对象,即数组。 我的第二个麻烦是响应包含文字“123”,除了 Foo 对象。
我想知道如何避免这些问题?我是否应该手动解析字符串,提取数组的内容,从中删除不必要的文字并将解析结果提供给 fromJson 方法或 有什么方法可以帮助我做的更简单?
【问题讨论】:
-
没有“纯”JSON 数组这样的东西。 RFC 7159 明确指出,根本没有要求 JSON 数组的成员都必须属于同一类型(更重要的是,您的 JSON 实际上不是合法的 JSON)。
-
好的,什么是将这个数组变成“纯”(或“合法”)的最简单、最快捷的方法?
-
读为
JsonElement,过滤掉不需要的元素,然后反序列化;这是我会推荐的。另一种解决方案是使用流 API