我已阅读之前提出的问题,但没有一个对我有帮助。
我的类(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 Array 对象是“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/