为什么我得到gson异常:期待找到对象?

时间:2015-04-27 07:33:47

标签: java json exception google-cloud-messaging gson

我正在使用GSON API 1.7.1,有时会出现以下错误。这个版本有错误吗?我是否需要升级当前版本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)

服务器是谷歌推送通知服务器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

2 个答案:

答案 0 :(得分:3)

  

这个版本有错误吗?

没有。看起来您的服务器正在返回非JSON响应,或者您传递了错误的参数,这与您正在使用的版本无关。

尝试检查服务器是否按预期工作并返回JSON。

答案 1 :(得分:1)

best_partition无效Json;您的服务器有时会向您的客户端发送错误的消息。由于您的客户99%的时间都在工作,问题显然在服务器中,而不是客户端。

但是,由于您只是从客户端向我们提供了信息,因此我们无法解决问题。最好的办法是尝试捕获完整的错误消息,然后使用搜索或发布不同的问题“为什么我的android-scm服务器发送以<!DOCTYPE开头的消息他们应该是Json?“

要捕获这个完整错误的消息,我会这样做:

<!DOCTYPE