如何在春季启动时将JSON hasmasp绑定到@RequestBody

时间:2019-11-02 07:53:33

标签: java json spring spring-boot

我想使用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

1 个答案:

答案 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) {
    ...
}