如何在spring-boot中将JSON HashMap绑定到@RequestBody



我想绑定这个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) {
...
}

最新更新