JSON в POJO с Springboot создания объекта с нулевыми атрибутами - PullRequest
1 голос
/ 13 мая 2019

Я делаю приложение AngularJs + SpringBoot CRUD.Я могу получить Json на контроллере правильно, но когда я конвертирую в pojo, он получает нулевые атрибуты.

Большинство похожих вопросов, где про имена переменных с ошибками. Я писал класс много раз, когда я его пересматривал.Все еще не работает.

МОДЕЛЬ:

private static final long serialVersionUID = 1L;


@Id
@SerializedName("id")
private int id;
@SerializedName("name")
private String name;
@SerializedName("price")
private Long price;

public Car() {

}

public Car(int id, String name, Long price) {
    super();
    this.id = id;
    this.name = name;
    this.price = price;
}

// геттеры / сеттеры

КОНТРОЛЛЕР:

 @RequestMapping(value = "add", method = RequestMethod.POST)
 @ResponseBody
 public ResponseEntity add(@RequestBody String jsonCar ) throws Exception {


     Car car = new Gson().fromJson(jsonCar, Car.class);

    // repository.save(car);


     System.out.println("Json== "  + jsonCar);

     System.out.println("pojo==" + car);

     return new ResponseEntity<>(HttpStatus.CREATED);

 }

Тестовый вывод:

Json == {"Car": {"id": 3, "name": "car", "price": 13555}}

pojo == Car {id: 0, name: null, цена: ноль}

1 Ответ

0 голосов
/ 13 мая 2019

Вышеуказанный объект JSON имеет строковый Car ключ и значение типа JSON Car, где JSON Object имеет свойства id, name и price

{
  "id":3,
  "name":"car",
  "price":13555
}

Итак, вам нужен внешний класс, который содержит Car объект

public class CarResponse {

 @SerializedName("Car")
 private Car car;

 // getters and setters 
}

и преобразовать строку jsonCar в CarResponse

CarResponse car = new Gson().fromJson(jsonCar, CarResponse.class);
 car.getCar() //get the Car object now
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...