第 376 章 YAML SnakeYAML DataFormat
作为 Camel 2.17 版提供
YAML 是一个数据格式,用于从 YAML 中汇总和解封 Java 对象。
对于对象 marshalling 的 YAML,Camel 提供三种常见 YAML 库的集成:
每个库都需要添加特殊的 camel 组件(请参阅"Dependency…"段落进一步下)。默认情况下,Camel 使用 SnakeYAML 库。
376.1. YAML 选项
YAML SnakeYAML 数据格式支持 11 个选项,它们列如下。
| 名称 | 默认 | Java 类型 | 描述 | 
|---|---|---|---|
| library | 
									 | 
									 | 要使用的 yaml 库。默认为 SnakeYAML | 
| unmarshalTypeName | 
									 | 取消armshalling 时要使用的 java 类型的类名称 | |
| constructor | 
									 | 构造传入文档的 BaseConstructor。 | |
| representer | 
									 | 用来发出传出对象的代表。 | |
| dumperOptions | 
									 | DumperOptions,以配置传出对象。 | |
| resolver | 
									 | 检测到隐式类型的解析器 | |
| useApplicationContextClassLoader | 
									 | 
									 | 使用 ApplicationContextClassLoader 作为自定义类Loader | 
| prettyFlow | 
									 | 
									 | 在使用流风格时,强制发出程序生成用户 YAML 文档。 | 
| allowAnyType | 
									 | 
									 | 允许任何类被取消封(un-marshaled) | 
| typeFilter | 
									 | 设置 SnakeYAML 允许的 un-marshall 类型 | |
| contentTypeHeader | 
									 | 
									 | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | 
SnakeYAML 可以从 YAML 定义中加载任何类,这可能会导致安全漏洞。默认情况下,SnakeYAML DataForma 限制对象可以加载到标准 Java 对象,如 List 或 Long。如果要载入自定义 POJO,需要将类型添加到 SnakeYAML DataFormat 类型过滤器列表中。如果您的源是可信的,您可以将属性 allowAnyType 设置为 true,因此 SnakeYAML DataForma 不会对类型执行任何过滤器。