我有一个YAML文件,看起来像这样:
---
name: Sam
tags:
- Dev
- Java
----
name: Bob
tags:
- PM
我想使用Jackson来反序列化文件中的所有文档,但我不知道如何使用普通的ObjectMapper
来实现这一点。如果我使用YAMLFactory
来创建文件的解析器,我可以单步执行所有标记,因此解析器显然能够处理多个文档-但是如何将它们联系在一起呢?看起来我的YAMLFactory创建的解析器只从文件中解析出一个文档。
我还尝试过直接创建YAMLParser并使用ObjectMapper#readValue(JsonParser, Class)
,但是ObjectMapper会耗尽整个YAMLParser来反序列化单个示例。
3条答案
按热度按时间qgelzfjb1#
这是多年以后的事了,但值得指出的是,这是受支持的。Jackson语义略有不同,可能是由于它的JSON起源。这可以通过使用
ObjectMapper
中的MappingIterator
来实现。如果需要,用您自己的POJO替换
ObjectNode
。pgky5nke2#
您可以直接使用SnakeYaml(JacksonYAML解析器正在内部使用它):
将产生:
8dtrkrch3#
这似乎在这一点上不受支持。这里是YAMLParser源代码的链接。
如果输入的YAML包含多个文档,则Jackson失败。下面是一个示例:
异常错误指向输入源中的第二项: