我想使用Spring Boot @RequestBody注释将此JSON结构
{
"male": {
"id": "0001",
"name": "Emma",
"pet": "dog"
},
"female": {
"id": "0001",
"name": "Cilia",
"pet": "cat"
}
}
绑定到Java HashMap数据结构。但是,spring boot无法将其绑定,但是如果我将json作为字符串接收并手动将其绑定到哈希表,它将成功。她是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和Setters
答案 0 :(得分:1)
尝试一下:
@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) {
...
}