2015-04-04 239 views
0

我如何解析這個使用改造?我得到的錯誤BEGIN_OBJECT但BEGIN_ARRAY改進錯誤預計BEGIN_OBJECT但是BEGIN_ARRAY

現在,我解析它這樣..

下面是適配器類

public static RetroInterface getCommonPathInterface() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint("myurl") 
       .build(); 
     records= restAdapter.create(RetroInterface.class); 
     return records; 
    } 

下面是接口,RetroInterface.class

@GET("/mypath") 
     void getValue(

       Callback<MyBean> callback  
     ); 

這是我如何調用它的主要活動

getCommonPathInterface().getValue(new Callback<MyBean>() { 
@Override 
        public void success(MyBean myBean, Response response) { 
         inti = 0; 

        } 

        @Override 
        public void failure(RetrofitError error) { 
         int i = 0; 
        } 

       }); 

下面是JSON響應

[ 
    { 
    id: "111", 
    name: "Val1" 
    }, 
    { 
    id: "222", 
    name: "Val2" 
    } 
    ] 
+0

你現在怎麼解析它? – Egor 2015-04-04 08:38:03

+1

請分享您當前的json解析代碼塊。否則沒有人可以幫助你。從錯誤消息來看,它非常清楚它需要一個JSON對象作爲根對象,但是它獲得了一個JSON數組作爲根對象。 – 2015-04-04 08:41:46

+0

看看:)。我編輯了代碼 – Abhilash 2015-04-04 08:52:53

回答

0

我是新來改造的,但我是有這個問題,當我處理一個多類POJO和使用專爲單級POJO代碼。讓我知道如果是這樣的話。另外,請粘貼一些代碼! :)

+0

我認爲,它不是一個很好的答案,但肯定會是一個非常好的評論。 – 2015-04-04 08:43:18

1

右鍵嗨,現在你正在解析響應,如果它是格式如下:

{ 
    "contacts":[ 
     { 
     "id":"111", 
     "name":"Val1" 
     }, 
     { 
     "id":"222", 
     "name":"Val2" 
     } 
    ] 
} 

例外告訴你這一點,你是在根期待的對象,但真實的數據實際上是數組。這意味着您需要將類型更改爲JSON對象。

謝謝。

+0

你的意思是說,我需要改變服務器端代碼,而不是一個JSON數組,它應該用一個JSON對象啓動響應,對吧? 我可以在客戶端做些什麼嗎? – Abhilash 2015-04-04 09:09:32

+0

是的,你可以解析任何發送給你的服務器,如果它是有效的json格式。 – Kunu 2015-04-04 09:11:14

+0

是的,假設你需要改變服務器端,所以它會返回json對象而不是JSON數組的響應。 – 2015-04-04 09:11:33

2

Yippi!得到它的工作。很簡單的解決方案我的回調方法發生了一些小改變。

而不是Callback<MyBean> callback使用Callback<MyBean[]> callback。問題解決了 ! :)

+0

哇,這很簡單,並不需要更換服務器。大!坦克Abhilash! – 2015-06-20 14:08:04

相關問題