我已经阅读了之前提出的问题,但没有一个能帮助我。
我的课程是:
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类中的数组进行映射吗?
答案 0 :(得分:2)
Gson库的Json Array对象是“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"}