如何使用jackson的mixin映射复杂类型?

时间:2017-06-27 01:33:18

标签: java xml jackson moxy jaxb2

我们说我有这些pojos:

    public class Person()
    {
        private String firstName;
        private String lastLamel
        private Address address;

        // setters, getters, toString...
    }

    public class Address()
    {
        private String line1;
        private String city;

        // setters, getters, toString...
    }

我们可以轻松地序列化以下json:

    {
        "firstName":"John"
        "lastName":"Smith"
        "address" : {
            "line" : "Fake Street",
            "city" : "Fake town"
        }
    }

现在,让我们说,除了上面的json之外,我还需要从具有完全不同结构的XML序列化对象:

    <r00t>
        <PrsInfo>
            <frNm>John</fnNm>
            <lNm>Smith</lNm>
        </PrsInfo>
        <lctn>
            <addr>
                <ln>Fake Street</ln>
                <town>Fake town</town>
            </addr>
        </lctn>
    </r00t>

现在,首先我考虑了MOXy,因为您可以在external file中定义绑定。虽然,我有一种感觉,与杰克逊一起玩MOXy会很奇怪。然后,我调查了Jackson Mix-Ins。 Mixins需要有一个包含映射指令的抽象类(或接口),因此PersonMixIn和AddressMixIn。就我而言,正如我所理解的那样,我必须制作pojos的副本,作为奇怪结构的xml之间的代理。也就是说,我试图避免使用Person,PersonMixin,Address,AddressMixin等,因为对于我试图完成的任务来说,这似乎有点过分了+如果你有一个任务会非常混乱两个以上的pojos序列化。

有没有办法让我有一个PersonMixIn类并映射那个xml(带地址)?

0 个答案:

没有答案