스프링 부트 (Jackson 사용)는 JSON 문서와 Java POJO간에 객체 매핑을 잘 처리합니다. 예를 들어 :스프링 부트로 게시 된 JSON의 엔티티 관계
{ id: 5, name: "Christopher" }
이 수락 할 수 있습니다
@PostMapping("/students/{id}")
public Student Update(Long studentId, @RequestBody Student student) {
studentRepository.save(student);
return student;
}
올바르게에 매핑 할 : JSON에서
public class Student {
private Long id;
private String name;
...
}
그러나 대한 중첩 된 모델?
{ id: 5, name: "Christopher", grades: [ {id: 1, letter: 'A'} ] }
또는 JSON의 옵션 모델은 무엇입니까?
{ id: 5, name: "Christopher" }
(Purposefully leaving out 'grades', though it could be accepted.)
JSON (예 : Rails '_destroy 플래그를 사용하여)에서 연결이 제거되었음을 나타냅니다.
{ id: 5, name: "Christopher", grades: [ {id: 1, letter: 'A', _destroy: true} ] }
또는 ID를 제외하여 연결을 만드시겠습니까?
{ id: 5, name: "Christopher", grades: [ {letter: 'A-'} ] }
스프링 부트가 이러한 아이디어를 지원합니까?
'선택 모델'을 의미하는 경우 somethink like some; Pojos에서 Optionals를 사용하면 안됩니다. –
옵션 모델 일 필요는 없으며, JSON에 있어야하는지 여부는 선택 사항입니다. 'Student'에 'Grades'목록이 있지만 학생의 이름 만 업데이트하고 싶다면 매번 'Grades'배열을 POST하지 않아도됩니다. – Christopher
필자가 설명하는 문제를 해결하기 위해 DTO (Data Transfer Object)를 사용했습니다. 또한 직렬화하지 않으려는 필드에 @JsonIgnore 주석을 추가 할 수 있습니다. –