Json Exception错误类型

时间:2014-03-11 09:48:11

标签: java json eclipse gson

我在我的项目中使用Gson。但它返回错误

String sig = PortalConfig.getSignature(method, callId, params);
String url = PortalConfig.getUrl(method, callId, sig, params);  
String plainResponse = BaseClientCommunicator.executeGetMethod(url);
GsonBuilder builder = new GsonBuilder();
Gson gsonObject = builder.create();
response = gsonObject.fromJson(plainResponse, GetMenuResponse.class);
return response;

示例我得到像这样的服务器响应

{
 "group": 
   [
     {
      "id": "206896",
      "name": "Ryż",
      "info": "xyz"
     },
     {
      "id": "206897",
      "name": "Buraki",
      "info": {}
     }
   ]
}

我有错误预期字符串,但是BEGIN_OBJECT

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 16151

我该如何处理这个异常?

public class GetMenuResponse 
{
@SerializedName("group")
private group[] group;

//method get and set
//to string method
}

public class group
{
@SerializedName("id")
private String id;
@SerializedName("name")
private String name;
@SerializedName("info")
private String info;

//method get and set
//to string method
}

我无法访问数据库,因为我使用了API

1 个答案:

答案 0 :(得分:1)

问题出在你的json字符串的第"info": {}行 您的类具有private String info;字符串类型,并且在您的JSON字符串中它是JSONObject 它会尝试将JSONObject转换为String,这会给出错误Expected a string but was BEGIN_OBJECTGSON API无法将JSONObject转换为JAVA字符串。

数组info的第一个元素中group的值正确为"info": "xyz",但第二个元素中的相同变量值不同。
检查info的值是否为String,而不是检查来自服务器的JSON响应,如果不是,则需要将其类型更改为类变量。