2016-05-16 5 views
1

Я использую модификацию и результат анализа с помощью GSON. Не знаю почему, но я получаю это одинGSON выбрасывает Ожидаемое BEGIN_ARRAY, но было ошибкой BEGIN_OBJECT

Прогнозный BEGIN_ARRAY но BEGIN_OBJECT в строке 1 колонки 2 пути

Я знаю, что значит эта ошибка, но не вижу причин.

Это мой 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

Только одно, мужчина. Просто попробуйте swift – 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

спасибо, чувак! –

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