首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Json异常类型错误

Json异常类型错误
EN

Stack Overflow用户
提问于 2014-03-11 17:48:11
回答 1查看 1.4K关注 0票数 0

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

代码语言:javascript
运行
复制
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;

例如,我得到如下的Server-response

代码语言:javascript
运行
复制
{
 "group": 
   [
     {
      "id": "206896",
      "name": "Ryż",
      "info": "xyz"
     },
     {
      "id": "206897",
      "name": "Buraki",
      "info": {}
     }
   ]
}

我有一个错误,应该是一个字符串,但却是BEGIN_OBJECT

代码语言:javascript
运行
复制
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 16151

我应该如何处理这个异常??

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

发布于 2014-03-11 18:24:44

问题出在json字符串中的"info": {}行。

您的类具有private String info;字符串类型,并且在您的JSON字符串中为JSONObject。

它将尝试将JSONObject转换为字符串,这会给出错误Expected a string but was BEGIN_OBJECT。JAVA无法将JSONObject转换为GSON字符串。

数组group的第一个元素中info的值是正确的,即"info": "xyz",但第二个元素中相同的变量值不同。

检查info的值,如果它是字符串,则需要检查来自服务器的JSON响应,如果不是,则需要将其类型更改为类变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22321962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档