2016-01-21 196 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" 
      ] 
     }, 
     ..... 
    ] 
} 

日誌說:

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,但在第7行BEGIN_OBJECT 」,因爲你的JSON的第7行應該是這樣的行:「名稱」:{ – Jiyeh

+0

是啊謝謝我,我犯了錯誤。我覺得有用,並會在5分鐘內接受,我可以問一個問題嗎? – Oreo

+0

是的,如果我可以回答 – Jiyeh