我想绑定这个JSON结构
{
"male": {
"id": "0001",
"name": "Emma",
"pet": "dog"
},
"female": {
"id": "0001",
"name": "Cilia",
"pet": "cat"
}
}
使用spring-boot@RequestBody注释来实现java HashMap数据结构。然而,spring-boot无法绑定它,但如果我以字符串的形式接收json并手动将其绑定到HashMap,它将成功。这是HashMap
public class Tickets {
private HashMap<String, PeopleType> peopleTypes = new HashMap();
}
public class PeopleType {
private String id;
private String name;
private String pet;
}
这是控制器
@PostMapping("/url")
public ResponseEntity bookTickets(@RequestBody Tickets tickets, HttpSession session) {
...
}
为了简洁起见,我删除了所有的Getter和Setter
试试这个:
@PostMapping("/url")
public ResponseEntity bookTickets(@RequestBody Map<String, PeopleType> peopleTypes, HttpSession session) {
Tickets tickets = new Tickets();
tickets.setPeopleTypes(peopleTypes);
...
}
或者试试这个:
public class Tickets {
private Map<String, PeopleType> peopleTypes = new HashMap<>();
@JsonAnySetter
public void addPeopleType(String type, PeopleType peopleType) {
peopleTypes.put(type, peopleType);
}
}
@PostMapping("/url")
public ResponseEntity bookTickets(@RequestBody Tickets tickets, HttpSession session) {
...
}