Возможно ли в Джексоне получить ссылку на ранее десериализованный объект из той же строки json с учетом его идентификатора?
Например, у меня есть следующие классы Java:
public class Company {
List<Employee> employeeList;
List<Customer> customerList;
....
}
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Customer {
Long id;
...
}
public class Employee {
Long id;
Map<Customer, int> utilityMap;
...
}
Я хочу создать экземпляр Company из строки json, которая выглядит так:
{
"customerList" : [ {
"id" : 0,
"name" : "customer0"
} ],
"employeeList" : [ {
"id" : 1,
"fullName" : "employee0",
"utilityMap" : {
"0" : 1
}
} ]
}
где ключ 0 в утилитеMap относится к клиенту с идентификатором 0.
С помощью KeyDeserializer я могу создать новый объект Customer, но я хочу, чтобы ключ Map вместо этого был ссылкой на соответствующий объект.
Простым решением было бы изменить подпись Map<Customer, int>
на Map<Long, int>
, но это невозможно из-за внутренних зависимостей, есть ли другой способ сделать это без изменения модели (аналогично ссылкам xml)?
"$ref" : #/some/path
для внутреннего API, но без помощи Джексона. - person Stephen P   schedule 14.01.2019<entry><Customer reference="1" /><value>1</value></entry>
- person M Talluzi   schedule 15.01.2019