2016-01-21 4 views
3

Я пытаюсь разобрать свой собственный JSON, но получить JSONSyntaxException, вот как мой JSON выглядит:дооснащения - java.lang.IllegalStateException: Ожидаемое BEGIN_ARRAY но BEGIN_OBJECT

{ 
    "type":"success", 
    "value":[ 
     { 
      "id":1, 
      "title":"Title - 1", 
     "name":{ 
      "first":"First - 1", 
      "last":"Last - 1" 
     }, 
      "hobbies":[ 
       "Writing Code - 1", 
      "Listening Music - 1" 
      ] 
     }, 
     ..... 
    ] 
} 

Log говорит:

E/app.retrofit_chucknorries.MainActivity$2: ERROR: com.google.gson.JsonSyntaxException: 
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT 
at line 7 column 12 path $.value[0].name 
01-21 12:41:52.156 28936-28936/app.retrofit_chucknorries 
W/System.err: retrofit.RetrofitError: com.google.gson.JsonSyntaxException: 
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT 
at line 7 column 12 path $.value[0].name 

Где я делаю mistake ? я только что сделал несколько небольших изменений, как на мой requirement and classes еще все почти такое же, как и в оригинале Код Value.java:

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

import java.util.ArrayList; 
import java.util.List; 

public class Value { 

    @SerializedName("id") 
    @Expose 
    private Integer id; 

    @SerializedName("title") 
    @Expose 
    private String title; 

    @SerializedName("hobbies") 
    @Expose 
    private List<String> hobbies = new ArrayList<String>(); 

    @SerializedName("name") 
    @Expose 
    private List<Name> name = new ArrayList<Name>(); 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public List<Name> getName() { 
     return name; 
    } 

    public void setName(List<Name> name) { 
     this.name = name; 
    } 

    public List<String> getHobbies() { 
     return hobbies; 
    } 

    public void setHobbies(List<String> hobbies) { 
     this.hobbies = hobbies; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 
} 

ответ

4

В классе Master.java, ваше имя не является массивом!

private List<Name> name = new ArrayList<Name>(); 

Изменение этого вместо этого и попробовать:

private Name name; 

На самом деле, видя журналы, за исключением вы можете сказать это.

+0

В журнале говорится: «BEGIN_ARRAY, но BEGIN_OBJECT в строке 7», так как ваша строка 7 вашего Json должна быть такой: «name»: { – Jiyeh

+0

да, спасибо, я ошибся. Я отметил как полезный и примет через 5 минут, могу ли я задать вопрос? – Oreo

+0

Да, если я могу ответить – Jiyeh

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