Java Gson抛出异常“;应为BEGIN“U对象,但为BEGIN“U数组”;
我已经阅读了之前提出的问题,但没有一个对我有帮助 我的班级是:Java Gson抛出异常“;应为BEGIN“U对象,但为BEGIN“U数组”;,java,json,gson,Java,Json,Gson,我已经阅读了之前提出的问题,但没有一个对我有帮助 我的班级是: Class A{ String name; JSONArray phone; ..... } 我正在使用Rest客户端发送请求,请求如下: {"name":"abc","phone":[{"no":"1234","type":"landline"},{"no":"4321","type","office"}]} 现在,此请求的架构有效,但当我发送请求时,我的应用程序会引发如下异常: com.google.gson.JsonSyn
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;
}
应该是:
{"no":"4321","type":"office"}
谢谢你的回答,但我刚把电话换成org.simple.json.JSONArray,一切正常。是的,我写得很快,就像打字一样,办公室。
{"no":"4321","type":"office"}