2015-04-04 2 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

+1

, пожалуйста, поделитесь своим текущим блоком кода синтаксического анализа json. иначе никто не сможет вам помочь. Из сообщения об ошибке очень ясно, что JSON Object ожидает, что он является корневым объектом, но он получает массив JSON в качестве корневого. –

+0

Взгляните :). Я отредактировал код – Abhilash

ответ

0

Я новичок в модернизации, но у меня был этот вопрос, когда я имел дело с несколькими класса POJO и с помощью кода, предназначенного для одного класса POJO. Дайте мне знать, если это так. Также, пожалуйста, вставьте немного кода! :)

+0

Я думаю, это не очень хороший ответ, но, безусловно, это будет очень хороший комментарий. –

1

Привет Сейчас вы разбор ответа, как если бы он был отформатирован, как это:

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

Исключение говорит вам это в том, что вы ожидаете объект в корне, но реальные данные на самом деле массив. Это означает, что вам нужно изменить тип массива на объект JSON.

спасибо.

+0

Вы хотите сказать, что мне нужно изменить код на стороне сервера таким образом, что вместо массива JSON он должен начать ответ с объекта JSON, правильно? Могу ли я что-то сделать на стороне клиента? – Abhilash

+0

Да, вы можете разобрать любой сервер, отправляемый вам, если он находится в действительном формате json. – Kunu

+0

Да, предположим, вам нужно изменить на стороне сервера, чтобы он возвращал ответ в json-объекте вместо массива JSON. –

2

Yippi! Это работало. Очень простое решение. Небольшое изменение в методе обратного вызова.

Вместо Callback<MyBean> callbackCallback<MyBean[]> callback. Задача решена ! :)

+0

Ничего себе, это было просто и не требовало изменения сервера. Большой! Танки Абхилаш! –