52.2. Jacksonxml Options
JacksonXML dataformat 支持 15 个选项,如下所列。
| Name | 默认值 | Java 类型 | 描述 |
|---|---|---|---|
| xmlMapper |
| 查找并使用具有给定 ID 的现有 XmlMapper。 | |
| prettyPrint | false |
| 要启用用户的打印输出,请执行以下操作:默认为 false。 |
| unmarshalType |
| unmarshalling 时使用的 java 类型的类名称。 | |
| jsonView |
| 当将 POJO 聚合到 JSON 时,您可能希望从 JSON 输出中排除某些字段。通过 Jackson,您可以使用 JSON 视图来实现这一目的。此选项是引用具有 JsonView 注释的类。 | |
| Include |
| 如果您要将 pojo 放入 JSON,并且 pojo 有一些带有 null 值的字段。如果您想要跳过这些 null 值,您可以将这个选项设置为 NON_NULL。 | |
| allowJmsType |
| 用于 JMS 用户,允许 JMS spec 中的 JMSType 标头指定用于 unmarshal 的 FQN 类名称。 | |
| collectionType |
| 引用要在要使用的 registry 中的自定义集合类型。这个选项很少被使用,但允许使用不同的集合类型,而不是基于 java.util.Collection 作为默认值。 | |
| useList |
| unmarshal to a Map 列表或 Pojo 列表。 | |
| enableJaxbAnnotationModule |
| 使用 jackson 时是否启用 JAXB 注释模块。启用后,Jackson 可以使用 JAXB 注释。 | |
| moduleClassNames |
| 要使用自定义 Jackson 模块 com.fasterxml.jackson.databind.Module 指定为 String 带有 FQN 类名称。可以使用逗号分隔多个类。 | |
| moduleRefs |
| 使用 Camel registry 引用的自定义 Jackson 模块。可以使用逗号分隔多个模块。 | |
| enableFeatures |
| 要在 Jackson com.fasterxml.jackson.databind.ObjectMapper 中启用的功能集。功能应该是与来自 com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, 或 com.fasterxml.jackson.databind.MapperFeature 中的多个功能匹配的名称。 | |
| disableFeatures |
| 在 Jackson com.fasterxml.jackson.databind.ObjectMapper 上禁用的一组功能。功能应该是与来自 com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, 或 com.fasterxml.jackson.databind.MapperFeature 中的多个功能匹配的名称。 | |
| allowUnmarshallType |
| 如果启用,则允许 Jackson 在 unmarshalling 期间尝试使用 CamelJacksonUnmarshalType 标头。只有在需要使用时,才会启用。 | |
| contentTypeHeader |
| 数据格式是否应该使用数据格式的类型设置 Content-Type 标头。例如,用于数据格式的 application/xml 放入 XML 或用于数据格式的 application/json,以转至 JSON。 |
52.2.1. 在 Spring DSL 中使用 Jackson XML 复制链接链接已复制到粘贴板!
在 Spring DSL 中使用 Data Format 时,您需要首先声明数据格式。这是在 DataFormats XML 标签中完成的。
<dataFormats>
<!-- here we define a Xml data format with the id jack and that it should use the TestPojo as the class type when
doing unmarshal. The unmarshalType is optional, if not provided Camel will use a Map as the type -->
<jacksonxml id="jack" unmarshalType="org.apache.camel.component.jacksonxml.TestPojo"/>
</dataFormats>
然后您可以在路由中引用此 id:
<route>
<from uri="direct:back"/>
<unmarshal><custom ref="jack"/></unmarshal>
<to uri="mock:reverse"/>
</route>
52.2.2. 从 marshalling 排除 POJO 字段 复制链接链接已复制到粘贴板!
当将 POJO 聚合到 XML 时,您可能希望从 XML 输出中排除某些字段。通过 Jackson,您可以使用 JSON 视图 来实现这一目的。首先创建一个或多个标记类。
将标记类与 @JsonView 注释一起使用,以包含/排除某些字段。该注释也适用于 getters。
最后,使用 Camel JacksonXMLDataFormat marshall POJO 到 XML。
请注意,生成的 XML 中缺少 weight 字段:
<pojo age="30" weight="70"/>