Jackson是否有可能在给定ID的情况下从相同的json字符串中获得对先前反序列化对象的引用?
例如,我有以下Java类:
$invoiceCTRL = $dom->createElement('InvoiceControl');
$root->appendChild($invoiceCTRL);
$invoiceCTRL->appendChild($dom->createElement('QuantityInvoices', count($invoiceTotals) ) );
$invoiceCTRL->appendChild($dom->createElement('ValueInvoices', $valueInvoiceTAX) );
我想通过如下所示的json字符串创建Company实例:
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;
...
}
其中UtilityMap中的键0表示ID为0的客户。
使用KeyDeserializer,我可以创建一个新的Customer对象,但是我希望Map的键是对相应对象的引用。
一个简单的解决方案是将{
"customerList" : [ {
"id" : 0,
"name" : "customer0"
} ],
"employeeList" : [ {
"id" : 1,
"fullName" : "employee0",
"utilityMap" : {
"0" : 1
}
} ]
}
的签名更改为Map<Customer, int>
,但是由于内部依赖性,这是不可能的,还有另一种无需更改模型即可完成此操作的方法(类似于xml参考)?