当前位置: 首页 > 知识库问答 >
问题:

Json异常类型错误

岑元徽
2023-03-14

我在我的项目中使用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个答案

高功
2023-03-14

问题在“info”行:{}在您的json字符串中。
您的类有私有字符串信息;字符串类型,在您的json字符串中是JSONObject。
它将尝试将JSONObject转换为字符串,这会给出错误预期是字符串,但是begin_objectGSONAPI不能将JSONObject转换为JAVA字符串。

在数组的第一个元素中info的值是正确的,即“info”:“xyz”但是在第二个元素中相同的变量值是不同的。
检查info的值,如果它是字符串,则需要检查来自服务器的JSON响应,如果不是,则需要将它的类型更改为类变量。

 类似资料:
  • 我想使用MongoDB用NestJs和TypeORM创建一个应用程序。假设我有一个实体,除了ID字段外,还有两个唯一的字段 当我想用已经存在的或创建一个新模块时,我得到了以下异常错误 因此,在catch语句中,我必须处理传入的错误。我要做的是 TypeORM是否公开预制异常?是否有我可以使用的枚举?获取这些TypeORM数据库错误的好方法是什么? 这里似乎列出了一些错误 https://githu

  • 问题内容: 我之前从未遇到过此错误,所以我不确定该怎么做或意味着什么 未处理的异常类型 它在以下代码中发生: 它给了我2个选项“添加抛出声明”和“使用try / catch进行环绕”。 我该怎么办,为什么? 问题答案: 这意味着您要调用的方法已使用指令声明了从类派生的异常。当以这种方式声明一个方法时,您将被迫使用一个块来处理该异常,或者将一个相同的(对于相同的异常或超类型)语句添加到您的方法声明中

  • //为(int i=0; i创建具有100个存储空间的数组 //提示用户输入要查找的索引

  • 我对颤振世界还不熟悉,我犯了一个我不能完全理解的错误。 这是我的netwrok处理程序代码 这是我的代码,我调用网络处理器的获取方法 我得到了这个错误 [错误:flatter/lib/ui/ui\u dart\u state.cc(209)]未处理的异常:类型'\u InternalLinkedHashMap 谁能帮帮我吗?

  • 问题内容: 我在项目中使用Gson将JSON字符串反序列化为Java对象。如果我提出请求,我希望服务器发出明确定义的响应。服务器将返回我期望的定义明确的响应,或者将返回一个(也定义为)错误对象。 讲清楚一点:假设我有一个简单的对象,像这样: 和这样的错误对象: 如果我收到类似的服务器响应 一切都按预期进行。 但是如果回应是这样的 我会得到一个对象,那里是和是0!Gson文档(来自Json)明确指出

  • 我在Play Store上发布了我的应用程序,在我的测试中没有任何错误,但是我从Firebase收到的报告显示我的适配器存在一些问题,跟踪错误和代码: 我感谢任何能帮助我的人