0

我想 { "male": { "id": "0001", "name": "Emma", "pet": "dog" }, "female": { "id": "0001", "name": "Cilia", "pet": "cat" } }使用 spring boot @RequestBody 注释将此 JSON 结构绑定到 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

4

1 回答 1

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) {
    ...
}
于 2019-11-02T08:08:45.380 回答