私のコントローラでは、新しいToDoItemを作成するためにhttprequest(私が送ったJSON)を解析したいと思います。 JSONを使ってlocalhost:8080/todos/newでPOSTを実行し、私のコントローラーはそのhttprequestをJSONに変え、そこからデータを解析してコンストラクターで使用する必要があります。ここ は、これまでの私のコードです:httprequestからJSONを作成してそれを構文解析します
// CREATE NEW TODOITEM FROM SENT JSON
@PostMapping("/todos/new")
public ResponseEntity<ToDoItem> newToDo(
@RequestBody ToDoItem toDoItem,
Principal principal
) {
User currentUser = userRepository.findByUsername(principal.getName());
toDoItemService.addToDo(toDoItem, currentUser);
return ResponseEntity.ok(toDoItem);
}
ところで、ここで日付として使用するための最良の選択となりますか?カレンダーは大丈夫ですか? JSONで解析して送信することについて話します。
EDIT: 注釈(セッターとゲッターはommited)と私のエンティティ:
@Entity
@Table (name = "TO_DO_ITEMS")
public class ToDoItem extends BaseEntity {
@Column(name = "TITLE", nullable = false)
private String title;
@Column(name = "COMPLETED")
private boolean completed;
@Column(name = "DUE_DATE", nullable = false)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
protected LocalDate dueDate;
// a ToDoItem is only associated with one user
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name = "USER_ID")
private User user;
// JPA demands empty constructor
public ToDoItem() {}
public ToDoItem(User user, String title, LocalDate dueDate) {
this.user = user;
this.title = title;
this.dueDate = dueDate;
}
そして、私が送っ:
{
"title":"testtodo",
"dueDate": [
2017,
10,
06
]
}
私は不正な要求エラーを取得:
{
"timestamp": 1485948636705,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "Could not read document: Invalid numeric value: Leading zeroes not allowed\n at [Source: [email protected]; line: 6, column: 4]\n at [Source: [email protected]; line: 6, column: 3] (through reference chain: com.doublemc.domain.ToDoItem[\"dueDate\"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid numeric value: Leading zeroes not allowed\n at [Source: [email protected]; line: 6, column: 4]\n at [Source: [email protected]; line: 6, column: 3] (through reference chain: com.doublemc.domain.ToDoItem[\"dueDate\"])",
"path": "/todos/new"
}
あなたは自分のJSONのサンプルを貼り付けることで、Javaでモデルを作成するには、このウェブサイトを使用することができます。 //www.jsonschema2pojo.org –