反序列化Map键作为POJO参考

时间:2019-01-14 19:31:09

标签: java json jackson jackson-databind

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参考)?

0 个答案:

没有答案