为什么我会收到 gson 异常:期望找到对象?
Why am I getting gson Exception: Expecting object found?
我正在使用 GSON API 1.7.1 有时会出现以下错误。这个版本有bug吗?是否需要升级当前版本2.x.x
com.google.gson.JsonParseException: Expecting object found: "<!DOCTYPE"
at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:100)
at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
at com.google.gson.JsonDeserializationContextDefault.fromJsonPrimitive(JsonDeserializationContextDefault.java:85)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:56)
服务器是google推送通知服务器GCM,
这是我的客户端代码。
Gson gson = new Gson();
com.sun.jersey.api.client.ClientResponse webResponse=
resource.header("Authorization", authorizationKey).
header("Content-Type", MediaType.APPLICATION_JSON).
post(com.sun.jersey.api.client.ClientResponse.class, payloadStr);
String responsePayload = webResponse.getEntity(String.class);
GcmResponse response = gson.fromJson(responsePayload, GcmResponse.class); ===>>> Exception point
Is there a bug for this version?
没有。看起来您的服务器正在返回非 JSON 响应或者您传递了错误的参数,这与您使用的版本无关。
尝试检查服务器是否按预期工作并返回 JSON。
<!DOCTYPE
无效 Json;您的服务器有时会向您的客户端发送错误消息。由于您的客户端 99% 的时间都在工作,问题显然出在服务器上,而不是客户端。
但是,由于您在这里仅从客户端向我们提供了信息,因此我们无法解决问题。最好的办法是尝试捕获完整的错误消息,然后使用搜索或post 不同的问题 "Why does my android-scm server send messages that begin with <!DOCTYPE
when they should be Json?"
要捕获这个完整的错误消息,我会这样做:
if(response.startsWith("<!DOCTYPE")) {
someLoggingMethod(response);`
} else {
// process the response
我正在使用 GSON API 1.7.1 有时会出现以下错误。这个版本有bug吗?是否需要升级当前版本2.x.x
com.google.gson.JsonParseException: Expecting object found: "<!DOCTYPE"
at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:100)
at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
at com.google.gson.JsonDeserializationContextDefault.fromJsonPrimitive(JsonDeserializationContextDefault.java:85)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:56)
服务器是google推送通知服务器GCM,
这是我的客户端代码。
Gson gson = new Gson();
com.sun.jersey.api.client.ClientResponse webResponse=
resource.header("Authorization", authorizationKey).
header("Content-Type", MediaType.APPLICATION_JSON).
post(com.sun.jersey.api.client.ClientResponse.class, payloadStr);
String responsePayload = webResponse.getEntity(String.class);
GcmResponse response = gson.fromJson(responsePayload, GcmResponse.class); ===>>> Exception point
Is there a bug for this version?
没有。看起来您的服务器正在返回非 JSON 响应或者您传递了错误的参数,这与您使用的版本无关。
尝试检查服务器是否按预期工作并返回 JSON。
<!DOCTYPE
无效 Json;您的服务器有时会向您的客户端发送错误消息。由于您的客户端 99% 的时间都在工作,问题显然出在服务器上,而不是客户端。
但是,由于您在这里仅从客户端向我们提供了信息,因此我们无法解决问题。最好的办法是尝试捕获完整的错误消息,然后使用搜索或post 不同的问题 "Why does my android-scm server send messages that begin with <!DOCTYPE
when they should be Json?"
要捕获这个完整的错误消息,我会这样做:
if(response.startsWith("<!DOCTYPE")) {
someLoggingMethod(response);`
} else {
// process the response