Hnadle Любое JSON определение в контроллере Spring Rest из запроса - PullRequest
0 голосов
/ 05 марта 2020

Я обрабатываю JSON, отправленное в теле запроса POST, используя:

Контроллер

@PostMapping
    public Library newLibrary(@RequestBody Library newLibrary) {
        return libraryRepository.saveAndFlush(newLibrary);
    }

Модель библиотеки

    @Column(name = "Name", nullable = false)
    private String name;

JSON в теле запроса

{

    "name" : "testLibrary"
}

Но мое приложение не получит определенную JSON структуру в вызове, например, я получаю что-то вот так -

{   
    "names" : ["testLibrary","testLibrary2"],
    "anyKey" : "val",
    "anykey2" : {"keys":"vals"}
}

Так что мне нужно знать, как я могу справиться с этой ситуацией в одной функции Post Mapping.

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете использовать аннотацию @JsonAnySetter из библиотеки Джексона.

Внутри вашей модели:

private Map<String, Object> details;

@JsonAnySetter
public void setDetail(String key, Object value) {
    if (null == details) {
        this.details = new HashMap<>();
    }
    this.details.put(key, value);
}

И это добавит дополнительные (не определенные в модели) поля на карту.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...