Jax-b和Jackson为未指定数量的元素编组?

时间:2014-07-18 17:56:12

标签: java xml jaxb jackson resteasy

在我正在使用restEASY的项目中,我正在从数据库中提取人员。所请求的功能之一是允许用户通过查询参数在URL中指定他们想要的字段。因此,在编组到xml或json时,我想要返回的字段数在运行时才会知道。有没有办法让jax-b和jackson在运行时忽略一个字段?

我的另一个想法是维护一个Field类型的集合,它本质上是一个键值对,但我想控制根元素名称。

我在输出中寻找的内容类似于

<person>
    <FirstName>Bob</FirstName>
    <LastName>Smith</LastName>
    <id>12345</id>
</person>

最多可能有50个这样的字段,我不想显示一堆空字段。我只想显示用户请求的内容。通过我的字段集合(基本上是一个标记的键值对)我可以做到这一点。

<person>
    <field>
        <name>FirstName</name>
        <value>Bob</value>
    </field>
    <field>
        <name>LastName</name>
        <value>Smith</value
    </field>
    <field>
        <name>id</name>
        <value>1234</value>
    </field>
</field>

总而言之,我希望能够在运行时根据条件忽略具有xml标记的字段,或者我希望能够以编程方式设置XMLRootElement名称。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以null输出不需要的所有字段,并确保您的xml序列化不包含空值(我认为这是默认值)。