json异常类型错误

txu3uszq  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(283)

我在我的项目中使用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\u对象

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

wnvonmuf

wnvonmuf1#

问题出在第一线 "info": {} 在json字符串中。
你们班有 private String info; 字符串类型,在json字符串中是jsonobject。
它将尝试将jsonobject转换为字符串,这将导致错误 Expected a string but was BEGIN_OBJECT . GSON api无法将jsonobject转换为java字符串。
的价值 info 在数组的第一个元素中 group 是正确的 "info": "xyz" 但第二个元素中相同的变量值是不同的。
校验值 info 如果是字符串,则需要检查来自服务器的json响应,如果不是,则需要将其类型更改为类变量。

相关问题