У меня простой контроллер:
@RequestMapping(method = { RequestMethod.POST })
public ResponseEntity<MyResponse> print(@RequestBody final RequestModel request) throw ApiException {
return null;
}
И в моей RequestModel:
class RequestModel {
private String name;
private CustomData data;
}
CustomData:
class CustomData {
private String data;
}
Когда я делаю запрос POST без поля «данные», он работает. Но если я добавлю поле «данные», я получу 400. Запрос, отправленный клиентом, был синтаксически неверен.
Мое плохое, да, это строка
Ате отправляет json? Покажите тело json.
{name: "test", data: {data: "test"}}}
Поместите двойные кавычки в имена полей и удалите последние скобки.
Пробовал, но получаю ту же ошибку




О, не знаю, если вы написали весь код, но вам следует реализовать сериализуемые и написать сеттеры и геттеры.
Но, отвечая на ваш вопрос, вы должны аннотировать свои поля с помощью @JsonProperty, чтобы указать требуемый флаг.
Я уже реализовал сериализуемые и имею геттеры / сеттеры.
Ваш опубликованный JSON должен быть примерно таким:
{
"name":"Luke",
"data": {
"data":"I am your father"
}
}
OBS: если вы используете Postman, установите header: key: Content-Type, value: application / json
Вы должны указать конечную точку: Пример :
@PostMapping("/data")
Вместо того
@RequestMapping(method = { RequestMethod.POST })
Если вы используете порт по умолчанию, попробуйте еще раз отправить сообщение:
http://localhost:8080/data
OBS: RequestModel и CustomerData должны иметь геттеры и сеттеры.
Что такое
private data? Это класс? Вы имеете в видуprivate String data;?