在Jackson的单个文件中反序列化来自多个YAML文档的POJO

 王瑾瑜2702935333 发布于 2022-12-29 02:50

我有一个YAML文件,看起来像这样:

---
name: Sam
tags:
    -   Dev
    -   Java
----
name: Bob
tags:
    -   PM

我想使用Jackson来反序列化文件中的所有文档,但是我没有看到使用普通文件的方法ObjectMapper.如果我使用YAMLFactory为我的文件创建一个解析器,我可以单步执行所有标记,因此解析器显然能够处理多个文档 - 但是如何将它们绑在一起? 看起来我的YAMLFactory创建的解析器只解析文件中的单个文档.

我也尝试直接创建YAMLParser并使用ObjectMapper#readValue(JsonParser, Class),但ObjectMapper耗尽了整个YAMLParser来反序列化单个实例.

1 个回答
  • 这是几年后,但值得指出的是,这是支持的.杰克逊的语义略有不同,可能是因为它的JSON起源.这可以通过使用MappingIteratorfrom 来实现ObjectMapper.

    YAMLFactory yaml;
    ObjectMapper mapper;
    
    YAMLParser yamlParser = yaml.createParser("file-with-multiple-docs.yaml")
    List<ObjectNode> docs = mapper
          .readValues<ObjectNode>(yamlParser, new TypeReference<ObjectNode> {})
          .readAll();
    

    ObjectNode如果需要,请替换为您自己的POJO.

    2022-12-29 03:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有