gpt4 book ai didi

java - Gson 抛出异常 "Expected BEGIN_OBJECT but was BEGIN_ARRAY"

转载 作者:行者123 更新时间:2023-11-30 09:01:56 25 4
gpt4 key购买 nike

我已经阅读了之前提出的问题,但没有一个对我有帮助。

我的类(class)是:

Class A{
String name;
JSONArray phone;
.....
}

我正在使用 Rest 客户端发送请求,请求如下:

{"name":"abc","phone":[{"no":"1234","type":"landline"},{"no":"4321","type","office"}]}

现在这个请求的模式是有效的,但是当我发送请求时,我的应用程序抛出一个异常,如:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY

我将请求映射到类:

           Gson gson=new Gson();
A para = null;
try{
para = gson.fromJson(json, A.class);

}catch(Exception e){
e.printStackTrace();
return false;
}

有人可以解释为什么我在请求中的数组没有映射到类 A 中的数组吗?

最佳答案

Gson 库的 Json 数组对象是“JsonArray”而不是“JSONArray”,但真正的问题是你告诉它从 JSON 到 JSON 对象的字符串解析,而不是你自己的内部对象,

试试这个:

class Phone
{
String no, type;
}

class A
{
String name;
List<Phone> phone; //or Phone[] phone;
}

列表中的最后一个电话号码在 json 中也有一个错误:

{"no":"4321","type","office"}

应该是:

{"no":"4321","type":"office"}

关于java - Gson 抛出异常 "Expected BEGIN_OBJECT but was BEGIN_ARRAY",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26185484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com