2015-03-04 2 views
0

Во-первых, JSON я получаю от сервера:Загрузка данных из Retrofit выпуска: Ожидаемое BEGIN_ARRAY но был BEGIN_OBJECT

{ 
"actor": [ 
    { 
     "uid": "/actor-12461615214214348149", 
     "subtype": "some type", 
     "location": { 
      "lat": 38.931, 
      "lng": -77.21 
     }, 
     "prop1": 100, 
     "prop2": 1, 
     "prop3": 20, 
     "prop4": 80 
    }, 
    { 
     "uid": "/actor-13893903348679219933", 
     "subtype": "some type", 
     "location": { 
      "lat": 38.93, 
      "lng": -77.21 
     }, 
     "prop1": 100, 
     "prop2": 1, 
     "prop3": 20, 
     "prop4": 80 
    }, 
    { 
     "uid": "/actor-13809263303067864337", 
     "subtype": "some type", 
     "location": { 
      "lat": 38.93, 
      "lng": -77.21 
     }, 
     "prop1": 100, 
     "prop2": 1, 
     "prop3": 20, 
     "prop4": 80 
    }   
    ] 
} 

И в POJO я хотел, чтобы загрузить из него:

public class Actor { 

private String uid; 
private String subtype; 
private Location loc; 
private int prop1; 
private int prop2; 
private String prop3; 
private String prop4; 

public String getUid() { 
    return uid; 
} 

public void setUid(String uid) { 
    this.uid = uid; 
} 

public String getSubtype() { 
    return subtype; 
} 

public void setSubtype(String subtype) { 
    this.subtype = subtype; 
} 

public Location getLoc() { 
    return loc; 
} 

public void setLoc(Location loc) { 
    this.loc = loc; 
} 

public int getProp1() { 
    return prop1; 
} 

public void setProp1(int prop1) { 
    this.prop1 = prop1; 
} 

public int getProp2() { 
    return prop2; 
} 

public void setProp2(int prop2) { 
    this.prop2 = prop2; 
} 

public String getProp3() { 
    return prop3; 
} 

public void setPower(String prop3) { 
    this.prop3 = prop3; 
} 

public String getProp4() { 
    return prop4; 
} 

public void setProp4(String prop4) { 
    this.prop4 = prop4; 
} 


public class Location{ 
    private double lat; 
    private double lng; 

    public double getLng() { 
     return lng; 
    } 
    public void setLng(double lng) { 
     this.lng = lng; 
    } 

    public double getLat() { 
     return lat; 
    } 
    public void setLat(double lat) { 
     this.lat = lat; 
    } 

    } 
} 

Вызов веб-службы, который я указал, ищет ответ Актера [].

После всего этого, я вижу IllegalStateException ДООСНАСТКЕ в: Ожидаемое BEGIN_ARRAY но BEGIN_OBJECT в строке 1 колонки 2

Я рассмотрел другие ошибки ДООСНАСТКЕ размещены здесь, и они чаще всего, как представляется, случаи людей, которые пытаются для загрузки массивов, когда данные, которые они получают, являются единственным объектом. Альтернативно, обратные - это случаи, когда люди получают массив объектов и пытаются загрузить его в одно pojo.

В моем случае, похоже, мне кажется, что у меня хорошее соответствие между массивом, который я пытаюсь загрузить, и массивом простых объектов, входящих в формат JSON.

У меня явно отсутствует что-то .... еще одна пара глаз pls?

+3

Ответ не является массивом Актеров, это объект, содержащий массив Актеров. – immibis

+0

Вы должны опубликовать свой интерфейс дооснащения – droidpl

ответ

1

У вас есть два варианта решения проблемы:

1- Если у вас есть доступ к серверу, чтобы изменить службу, сделать это, чтобы обеспечить ответы, как:

[ 
{ 
    "uid": "/actor-12461615214214348149", 
    "subtype": "some type", 
    "location": { 
     "lat": 38.931, 
     "lng": -77.21 
    }, 
    "prop1": 100, 
    "prop2": 1, 
    "prop3": 20, 
    "prop4": 80 
}, 
{ 
    "uid": "/actor-13893903348679219933", 
    "subtype": "some type", 
    "location": { 
     "lat": 38.93, 
     "lng": -77.21 
    }, 
    "prop1": 100, 
    "prop2": 1, 
    "prop3": 20, 
    "prop4": 80 
}] 

2- Если вы не может изменять значения с сервера, создавать обёртку POJO с актерским списком и делать модификацию, чтобы обеспечить это как обратный вызов.

public class ActorWrapper { 
    private List<Actor> actor; 

    //GETTERS AND SETTERS 
} 
+0

Я пошел с оберткой. В настоящее время ошибок нет, но это также не анализирует одну вещь. Все элементы в списке Actor равны нулю. – Raevik

+1

Вы назвали его актером в классе обертки? – droidpl

+0

толстый пальцем имя в обертке. Это было спасибо – Raevik

Смежные вопросы