尝试使用GSON解析JSON字符串失败。我使用JDK 8,GSON V2.10.1(使用IntelliJ,也是VS Code)并确定了错误的来源。相关代码片段如下所示:
JSON:
{
"took" : 2,
"hits" : {
"total" : 19,
"max_score" : 1.0,
"hits" : [
{
"_index" : "layouts-new",
"_type" : "doc",
"_id" : "a0b8707c-feb3-4867-966d-33c435c82141",
"_score" : 1.0,
. . .
字符串
我写的代码片段:
Gson gson = new GsonBuilder().setLenient().create();
JSONObject jsonObject = gson.fromJson(json, JSONObject.class);
. . .
型
返回的jsonObject为{},为空。这意味着JSON中的任何元素都没有被解析。已调试并发现错误行为BoundField field = boundFields.get(name)
。它扔了一个NPE。该源代码来自com.google.gson.internal.bind
包中ReflectiveTypeAdapterFactory.java
的方法public T read(JsonReader in) throws IOException
。
try {
in.beginObject();
while (in.hasNext()) {
String name = in.nextName();
BoundField field = boundFields.get(name);
if (field == null || !field.deserialized) {
in.skipValue();
} else {
readField(accumulator, in, field);
}
}
} catch (IllegalStateException e) {
型
你知道是什么引起的吗?或者我漏掉了什么?
先谢了
1条答案
按热度按时间o0lyfsai1#
JSONObject
不是来自Gson库。因此,Gson没有内置适配器,并尝试使用反射进行反序列化,使用JSONObject
类的内部字段。使用相应的Gson类
com.google.gson.JsonObject
:字符串