Как связать JSON hasmasp с @RequestBody при весенней загрузке - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу связать эту структуру JSON { "male": { "id": "0001", "name": "Emma", "pet": "dog" }, "female": { "id": "0001", "name": "Cilia", "pet": "cat" } } со структурой данных Java HashMap, используя аннотацию весенней загрузки @RequestBody. Тем не менее, 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) {
...
}

Для краткости я убрал все геттеры и сеттеры

1 Ответ

1 голос
/ 02 ноября 2019

Попробуйте:

@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) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...