第 373 章 XML JSon DataFormat (已弃用)
从 Camel 版本 2.10 开始提供
Camel 已支持很多数据格式来执行 XML 和 JSON 相关的转换,但所有这些格式都需要一个 POJO 作为输入(用于 marshalling)或生成 POJO 作为输出(用于输出)。此数据格式提供从 XML 转换到 JSON 的功能,反之亦然,无需通过中间 POJO 进行分步。
此数据格式利用 Json-lib 库来实现直接转换。在这种情况下,XML 被视为高级格式,而 JSON 是低级格式。因此,marshal/unmarshal 语义被分配如下:
- Marshalling TOKEN 从 XML 转换为 JSON
- 从 JSON 转换为 XML.
373.1. 选项
XML JSon dataformat 支持 13 个选项,如下所列。
名称 | 默认值 | Java 类型 | 描述 |
---|---|---|---|
编码 |
| 设置编码。用于 unmarshalling (JSON 到 XML 转换)。 | |
elementName |
| 指定代表每个数组元素的 XML 元素的名称。用于 unmarshalling (JSON 到 XML 转换)。 | |
arrayName |
| 指定顶级 XML 元素的名称。用于 unmarshalling (JSON 到 XML 转换)。例如,当转换 1、2、3 时,默认情况下会输出为 123。通过设置这个选项或 rootName,您可以更改元素的名称。 | |
forceTopLevelObject |
|
| 确定生成的 JSON 是否将从名称与 XML root 元素匹配的最顶层元素开始。用于划分(XML 到 JSon 转换)。如果禁用,XML 字符串 12 将转换为 'x: '1', 'y': '2'。否则,它会变为 'a': '1', 'y': '2'。 |
namespaceLenient |
|
| 可以接受不完整的命名空间前缀的标志。用于 unmarshalling (JSON 到 XML 转换)。在大多数情况下,json-lib 会在运行时自动更改此标志以匹配处理。 |
rootName |
| 指定顶层元素的名称。用于 unmarshalling (JSON 到 XML 转换)。如果没有设置,json-lib 将使用 arrayName 或 objectName (默认值:'o',当前无法使用这个数据格式配置)。如果设置为 'root',则 JSON 字符串 'x': 'value1', 'y' : 'value2' 将转换为 value1value2,否则 'root' 元素将命名为 'o'。 | |
skipWhitespace |
|
| 确定 XML 元素之间的空格是否被视为文本值或忽略。用于划分(XML 到 JSon 转换)。 |
trimSpaces |
|
| 确定在 String 值中是否省略了前导和尾随空格。用于划分(XML 到 JSon 转换)。 |
skipNamespaces |
|
| 信号是否应忽略命名空间。默认情况下,它们将使用 xmlns 元素添加到 JSON 输出中。用于划分(XML 到 JSon 转换)。 |
removeNamespacePrefixes |
|
| 从 XML 限定元素中删除命名空间前缀,以便生成的 JSON 字符串不包含它们。用于划分(XML 到 JSon 转换)。 |
expandableProperties |
| 通过可扩展属性,JSON 数组元素将转换为 XML 作为重复性 XML 元素的序列,其本地名称等于 JSON 键,例如:数字:1,2,3,通常转换为 123 (可以通过设置 elementName 修改)。如果数字被设置为 unmarshalling (JSON)的可扩展属性,则 将转换为 123。 | |
typeHints |
| 为生成的 XML 添加类型提示,以帮助转换到 JSON。用于 unmarshalling (JSON 到 XML 转换)。 | |
contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该使用 data 格式的类型设置 Content-Type 标头。例如,用于数据格式到 XML 的 application/xml 或用于数据格式的 application/json 发送到 JSon 等。 |