2014-10-03 188 views
1

嗨,我已经阅读了以前提出的问题,但没有人帮助我。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类中的数组吗?

回答

1

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"} 
+0

感谢您的回答,但我只是改变了电话org.simple.json.JSONArray和一切工作。是的,我匆忙地把它写成类型,办公室。 – Mr37037 2014-10-03 20:42:30

+0

好吧,我想猜测..为什么把它作为一个JSON对象? – Dave 2014-10-03 20:51:51

相关问题