2016-05-16 202 views
1

我正在使用GSON改造和分析結果。不知道爲什麼,但我收到這個GSON拋出期望的BEGIN_ARRAY,但是BEGIN_OBJECT錯誤

預計BEGIN_ARRAY但行1列2路徑是BEGIN_OBJECT

我知道這是什麼意思的錯誤,但沒有看到的原因。

這是我的JSON響應

{"suggestions": [ 
{ 
    "value": "г Казань", 
    "unrestricted_value": "Респ Татарстан, г Казань", 
    "data": { 
    "qc_complete": null, 
    "qc_house": null, 
    "qc_geo": "4", 
    "postal_code": "420000", 
    "postal_box": null, 
    "country": "Россия", 
    "region_fias_id": null, 
    "region_kladr_id": null, 
    "region_with_type": "Респ Татарстан", 
    "region_type": "Респ", 
    "region_type_full": "республика", 
    "region": "Татарстан", 
    "area_fias_id": null, 
    "area_kladr_id": null, 
    "area_with_type": null, 
    "area_type": null, 
    "area_type_full": null, 
    "area": null, 
    "city_fias_id": null, 
    "city_kladr_id": null, 
    "city_with_type": "г Казань", 
    "city_type": "г", 
    "city_type_full": "город", 
    "city": "Казань", 
    "city_district": null, 
    "settlement_fias_id": null, 
    "settlement_kladr_id": null, 
    "settlement_with_type": null, 
    "settlement_type": null, 
    "settlement_type_full": null, 
    "settlement": null, 
    "street_fias_id": null, 
    "street_kladr_id": null, 
    "street_with_type": null, 
    "street_type": null, 
    "street_type_full": null, 
    "street": null, 
    "house_fias_id": null, 
    "house_kladr_id": null, 
    "house_type": null, 
    "house_type_full": null, 
    "house": null, 
    "block_type": null, 
    "block_type_full": null, 
    "block": null, 
    "flat_area": null, 
    "square_meter_price": null, 
    "flat_price": null, 
    "flat_type": null, 
    "flat_type_full": null, 
    "flat": null, 
    "fias_id": "93b3df57-4c89-44df-ac42-96f05e9cd3b9", 
    "fias_level": "4", 
    "kladr_id": "1600000100000", 
    "tax_office": "1600", 
    "tax_office_legal": null, 
    "capital_marker": "2", 
    "okato": "92401000000", 
    "oktmo": "92701000", 
    "timezone": null, 
    "geo_lat": "55.7943051", 
    "geo_lon": "49.1116709", 
    "beltway_hit": null, 
    "beltway_distance": null, 
    "unparsed_parts": null, 
    "qc": null 
    } 
} ]} 

這是由pojogenerator產生我的模型。

public class DadataResponse { 

@SerializedName("suggestions") 
@Expose 
private List<Suggestion> suggestions = new ArrayList<Suggestion>(); 

/** 
* 
* @return 
*  The suggestions 
*/ 
public List<Suggestion> getSuggestions() { 
    return suggestions; 
} 

/** 
* 
* @param suggestions 
*  The suggestions 
*/ 
public void setSuggestions(List<Suggestion> suggestions) { 
    this.suggestions = suggestions; 
} 

}

public class Suggestion { 

@SerializedName("value") 
@Expose 
private String value; 
@SerializedName("unrestricted_value") 
@Expose 
private String unrestrictedValue; 
@SerializedName("data") 
@Expose 
private Data data; 

/** 
* 
* @return 
*  The value 
*/ 
public String getValue() { 
    return value; 
} 

/** 
* 
* @param value 
*  The value 
*/ 
public void setValue(String value) { 
    this.value = value; 
} 

/** 
* 
* @return 
*  The unrestrictedValue 
*/ 
public String getUnrestrictedValue() { 
    return unrestrictedValue; 
} 

/** 
* 
* @param unrestrictedValue 
*  The unrestricted_value 
*/ 
public void setUnrestrictedValue(String unrestrictedValue) { 
    this.unrestrictedValue = unrestrictedValue; 
} 

/** 
* 
* @return 
*  The data 
*/ 
public Data getData() { 
    return data; 
} 

/** 
* 
* @param data 
*  The data 
*/ 
public void setData(Data data) { 
    this.data = data; 
} 

}

和數據類,但它太大了,並不需要張貼在這裏。

那麼爲什麼我會收到此錯誤?請幫助

UPD

public ApiService(String URLSTRING){ 

    RequestInterceptor requestInterceptor = new RequestInterceptor() { 
     @Override 
     public void intercept(RequestFacade request) { 
      request.addHeader("Authorization", "Token"); 
      request.addHeader("Content-Type","application/json"); 
      request.addHeader("Accept","application/json"); 
     } 
    }; 

    RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint(URLSTRING) 
        .setRequestInterceptor(requestInterceptor) 
      .setLogLevel(RestAdapter.LogLevel.FULL) 
      .build(); 

    mApi = restAdapter.create(Api.class); 
} 

public interface Api{ 

    @GET("/address") 
    List<DadataResponse> getDadata(@Query("query") String query); 

} 
+1

這裏缺少的部分是調用gson來解析json的代碼。您的類型令牌可能是錯誤的。 – njzk2

+0

只有一件事,男人。只是嘗試迅速 – SIgalGleb

+0

@ njzk2我添加改造電話 –

回答

2

變化

List<DadataResponse> getDadata(@Query("query") String query); 

DadataResponse getDadata(@Query("query") String query); 

預計BEGIN_ARRAY但BEGIN_OBJECT在行1列2路

意味着它期待一個數組(因爲你告訴它),但它收到一個對象。

它看起來像你收到一個單一的DadataResponse而不是它們的數組,所以你需要更新你的簽名以符合現實。

+1

謝謝你的傢伙! –

相關問題