2016-05-16 141 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

谢谢你的家伙! –

相关问题