Я хочу сопоставить входящую строку JSON с пользовательским POJO в моем @PostMapping
:
@PostMapping(value = "/classification", consumes = "application/json", produces = "application/json")
public ResponseEntity<String> getClassificationResults (
@RequestBody Classification classification) {
this.elasticSearchService.getSpatialData(classification);
return ResponseEntity.ok(" ");
}
My classification POJO
:
public class Classification {
@JsonProperty
private ArrayList<Point2D.Double> shapes;
@JsonProperty
private String [] colors;
@JsonProperty
private String [] pattern;
@JsonProperty
private Integer size;
...
}
, который (конечно, ) приводит к ошибке:
JSON ошибка разбора: невозможно создать экземпляр java.awt.geom.Point2D$Double
(хотя существует хотя бы один создатель): нет конструктора аргумента строки / метода фабрики для десериализации из значения String
Пример данных:
"[[8.880321034663876,49.121984026160106],
[8.746452886806255,49.11327654230291],
[8.61786489671323,49.087497674922325],...]"
Мой результирующий объект должен быть не ArrayList
из Point2D
объектов, а скорее любым типом Array
, который содержит те же значения в качестве примера - просто преобразуем в число.
Нужно ли указывать свой десериализатор Джексона (как я могу это сделать?) для этой проблемы, или достаточно изменить конструктор Classification
?