2014-10-03 189 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

相關問題