У меня проблема с функцией gson.fromJson
. Я получаю JSON от моего ElasticSearch. Я могу преобразовать тело в строку, но не могу преобразовать это в объект. Может быть, я должен использовать что-то еще, чем Gson? Может кто-нибудь помочь?
Заранее спасибо.
Получить данные и gson.fromJson
:
try {
Response response = restClient.performRequest(
"GET",
"/elasticsearch/posts/car/_search",
Collections.<String, String>emptyMap(),
entity1);
String responseBody = EntityUtils.toString(response.getEntity());
Gson gson = new Gson();
DataCar dataCar = gson.fromJson(responseBody, DataCar.class);
GsonBuilder gsonBuilder = new GsonBuilder();
DataCar cars = gsonBuilder.create().fromJson(responseBody,DataCar.class);
ArrayList<Car> carsList = cars.getCars();
} catch (IOException e) {
e.printStackTrace();
}
JSON текст:
{
"took":1,
"timed_out":false,
"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},
"hits":{"total":{"value":6,"relation":"eq"},
"max_score":1.0,
"hits": [{"_index":"posts","_type":"car","
_id":"b9ZirGoByBAZW2S2ADLS","
_score":1.0,
"_source":{
"image_url": "https://examplepicturelink.com/xyz.jpg",
"brand": "Audi",
"model": "A8",
"price": "120000",
"engine":"5.0",
"year":"2018",
"hp":"380",
"mileage":"100",
"color":"czarny",
"damaged":"false",
"automated":"true",
"fuel":"true",
"country_from":"Polska",
"post_id":"123abc456d7",
"url":"https://examplepicturelink.com/xyz.jpg",
"region":"Kujawsko-pomorskie",
"city":"Bydgoszcz",
"description":"Samochód z salonu, bardzo polecam!",
"created_at":"29-04-2019"
}} // and more records
Загрузка данных в приложение работает хорошо
DataCar и модель автомобиля:
public class DataCar {
public ArrayList<Car> getCars() {
return cars;
}
public void setCars(ArrayList<Car> cars) {
this.cars = cars;
}
private ArrayList<Car> cars;
}
import com.google.gson.annotations.SerializedName;
public class Car {
@SerializedName("image_url")
private String image_url;
@SerializedName("brand")
private String brand;
@SerializedName("model")
private String model;
@SerializedName("price")
private Double price;
@SerializedName("engine")
private String engine;
@SerializedName("year")
private Integer year;
@SerializedName("hp")
private Integer hp;
@SerializedName("mileage")
private Integer mileage;
@SerializedName("color")
private String color;
@SerializedName("damaged")
private Boolean damaged;
@SerializedName("automated")
private Boolean automated;
@SerializedName("fuel")
private Boolean fuel;
@SerializedName("country_from")
private String country_from;
@SerializedName("post_id")
private String post_id;
@SerializedName("url")
private String url;
@SerializedName("region")
private String region;
@SerializedName("city")
private String city;
@SerializedName("description")
private String description;
@SerializedName("created_at")
private String created_at;
//getters + setters + constructors
}