Gson投掷eception“预计BEGIN_OBJECT,但是BEGIN_ARRAY”
问题描述:
嗨,我已经阅读了以前提出的问题,但没有人帮助我。Gson投掷eception“预计BEGIN_OBJECT,但是BEGIN_ARRAY”
我的班级:
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;
}
也是在列表的最后一个PHONENUMBER已在JSON的错误:
{"no":"4321","type","office"}
应该是:
{"no":"4321","type":"office"}
感谢您的回答,但我只是改变了电话org.simple.json.JSONArray和一切工作。是的,我匆忙地把它写成类型,办公室。 – Mr37037 2014-10-03 20:42:30
好吧,我想猜测..为什么把它作为一个JSON对象? – Dave 2014-10-03 20:51:51