Я застрял на проблеме с Jackson
уже довольно давно, и мне не терпится ее решить.У меня есть JSON
, в котором есть объекты, ссылающиеся друг на друга с идентификаторами, и мне нужно десериализовать его в объекты, но я продолжаю получать Unresolved forward references exception
, когда пытаюсь это сделать.
Я пытался использоватьJackson
аннотация @JsonIdentityInfo
выше рассматриваемых классов, но это не дало никаких результатов.
Пример JSON:
{
"customer": [
{
"id": 1,
"name": "Jane Gallow",
"age": 16
},
{
"id": 2,
"name": "John Sharp",
"age": 20
},
],
"shoppingcart": [
{
"id": 1,
"customer": 2,
"orderDate": "2015-02-19"
}
]
}
Класс клиента
@JsonIdentityInfo(generator= ObjectIdGenerators.PropertyGenerator.class, property="id",scope = Customer.class)
@JsonIdentityReference(alwaysAsId = true)
public class Customer {
private int id = -1;
private String name;
private int age;
//getters, setters
}
Класс ShoppingCart
<!-- language: java -->
@JsonIdentityInfo(generator= ObjectIdGenerators.PropertyGenerator.class, property="id",scope = ShoppingCart.class)
public class ShoppingCart {
private int id = -1;
private Customer customer;
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate orderDate = LocalDate.now();
//getters, setters
}
Я ожидаю, что Jackson
даст мне объект ShoppinCart
, который имеет ссылку на Customer
объект с идентификатором 2
(в данном случае Джон Шарп).Но я просто не могу заставить его работать, и это дает мне "main" com.fasterxml.jackson.databind.deser.UnresolvedForwardReference
, когда я пытаюсь читать из JSON методом ObjectMapper.readValue()
.