Spring Boot and RestControllerを使用してネストされたJSONをデータベースに保存しようとしています。 RestControllerに春が提供する自動マッピングを使用して、通常のフィールド(名前とプレート番号)にマッピングするのは簡単だったRestControllerでネストされたJSONをマップするにはどうすればよいですか?
{
"name": "Car 1",
"plate_number": "PLATE NUMBER",
"owner": {
"first_name": "First name",
"last_name": "Last name"
}
}
:
public Car createProduct(Car car) {
}
をしかし、今、どのようにこれらのJSONsは次のようになり私はCarOwner、それ自身のクラスにオブジェクトの所有者をマップすることができます(私はそう一般的な方法は非常に有用であろう。このアプローチを使用して複数のクラスを持っていることを言及する必要があります)
EDIT:?
の私のエンティティは次のようになります。
@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
}
そして私は、コントローラにこのような何かをしようとしている:2 私の2つのサービスは、次のようになり
@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。構造は両者で同じです。
@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だったが、どうしたのが正しいのか分からない。私は、このWebサイトhttp://codebeautify.org/jsonviewer –