Я получаю сообщение об ошибке при попытке сопоставить строку json с объектом DataProduct:
com.fasterxml.jackson.databind.JsonMappingException: N/A (through reference chain: DataProduct["data"]->java.util.ArrayList[0])
Эта строка json была создана при сериализации из того же объекта DataProduct, поэтому я Я запутался в том, как это не может работать, просто глядя на него, кажется, все совпадает
Вот как я пытаюсь отобразить это:
ObjectMapper mapper = new ObjectMapper();
DataProduct dataProduct = mapper.readValue(json, DataProduct.class);
Это это строка json, которую я пытаюсь отобразить:
{
"data":[
{
"barcode":"4412312324",
"description":"Southern Fries",
"price":2.3,
"onHand":0.0,
"Aisle":"25R",
"Location Code":"101",
"Section":"Grocery",
"Date_Removed":"42:53.4",
}
],
"meta":{
"store":"Store 1",
"originated":"2020-02-07T20:49:38.105629500Z",
"correlationId":"a5ea816d-6589-4251-b951-d022a0159352"
}
}
Вот классы, на которые я пытаюсь отобразить:
@Value
public class DataProduct {
private List<Product> data;
private DataProductMetadata meta;
}
@AllArgsConstructor
@Value
public class Product {
@NonNull
private String barcode;
@NonNull
private String description;
@NonNull
private Double price;
@NonNull
private Double onHand;
@JsonIgnore
@JsonUnwrapped
private Map<String, Object> customFields;
@JsonAnyGetter
public Map<String, Object> getCustomFields() {
return customFields;
}
@JsonAnySetter
public void setCustomField(String name, Object value) {
customFields.put(name, value);
}
}
@Builder
@Value
public class DataProductMetadata {
@NonNull
private final String store;
@NonNull
private final Instant originated;
@NonNull
private final String correlationId;
}