我試圖使用Spring Boot和RestController在數據庫中保存嵌套的JSON。這些JSONs是這個樣子:如何在RestController中映射嵌套的JSON?
{
"name": "Car 1",
"plate_number": "PLATE NUMBER",
"owner": {
"first_name": "First name",
"last_name": "Last name"
}
}
這是很容易映射利用春天的RestController提供的自動映射正常的字段(姓名和車牌號碼):
public Car createProduct(Car car) {
}
但現在,如何可我對象所有者映射到它自己的類,CarOwner(我需要提及的是我有一個使用這種方法,使一個通用的方法是非常有用的多類)
編輯:
個我的實體是這樣的:
@Entity
@Table(name = "cars")
public class Car extends BaseEntityWithName {
private String name;
private String plateNumber;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "owner_id")
private Owner owner;
}
@Entity
@Table(name = "car_owners")
public class CarOwner extends BaseEntityWithName {
private String firstName;
private String lastName;
// Constructor, setters, getters
}
而且我試圖做這樣的事情在控制器:
@RestController
@RequestMapping("/cars")
public class CarController {
@Autowired
private CarService carService;
@RequestMapping(value = "/create", method = RequestMethod.POST)
@ResponseBody
public ProductModel createItem(Car car) {
// How do I create the owner using the JSON parameters
// provided in the nested JSON?
car.setOwner(owner); // Owner created above
return carService.save(car);
}
}
EDIT 2 我的兩個服務這個樣子。兩者的結構都是一樣的。
@Service
public class CarServiceImpl implements CarService {
@Autowired
private ProductManufacturerRepository productManufacturerRepository;
@Autowired
private CarRepository carRepository;
@Override
public List<Car> findAll() {
return carRepository.findAll();
}
@Override
public Car findOne(Long id) {
return carRepository.findOne(id);
}
@Override
@Transactional
public Car save(Car car) {
return carRepository.save(car);
}
@Override
public void removeOne(Long id) {
carRepository.delete(id);
}
}
您的JSON文件格式不正確。請先更新您預期的JSON模式。 –
@DoNhuVy這是我從前端發送的確切的json,我不明白這是不正確的。我已經更新了一個基於這個網站的工作之一http://codebeautify.org/jsonviewer –