新的项目中需要将yaml文件解析为对象,调研了决定使用snakeYaml,下面看一看怎么使用。

一、引入依赖

因为项目是使用maven构建的,所以我们在pom文件中引入snakeYaml的依赖,如下:

<dependency>      <groupId>org.yaml</groupId>      <artifactId>snakeyaml</artifactId>      <version>1.21</version></dependency>

二,简单示例

 public void testLoad() {    String yamlStr = "key: hello yaml";    Yaml yaml = new Yaml();    Object ret = yaml.load(yamlStr);    System.out.println(ret);  }

其具体步骤是这样:
(1)使用Yaml类,创建一个Yaml对象,所有的解析操作都是从这个对象开始;
(2)声明了一个yaml的字符串(当然也可以使用yaml文档等),定义了一个对象:key: hello yaml;
(3)使用Yaml对象的load方法加载一段yaml字符串,返回解析之后的对象,其实这个对象是一个Map:LinkedHashMap;
三、解析为对象
假设有如下yml配置文件需要解析:
given  : Chrisfamily : Dumarsaddress:    -       lines: 458 Walkman      city    : Royal Oak      state   : MI      postal  : 48046    -       lines: 459 Walkman      city    : Royal Oak      state   : MI      postal  : 48046

定义javaBean如下:
public class Person {    private String given;    private String family;    private List<Address> address;  //省略getter和setter方法}

public class Address {    private String lines;    private String city;    private String state;    private Integer postal;  //省略getter和setter方法}

解析代码如下:
public void parsePerson() {    //指定yaml文件的root对象解析成Person类型    Yaml yaml = new Yaml(new Constructor(Person.class));    Person ret = (Person) yaml.load(this.getClass().getClassLoader()            .getResourceAsStream("person.yaml"));    Assert.assertNotNull(ret);    Assert.assertEquals("MI", ret.getAddress().get(0).getState());}

 

转载于:https://www.cnblogs.com/junjiang3/p/9463039.html

SnakeYaml使用相关推荐

  1. snakeyaml读取yaml/yml配置文件数据

    1.添加maven依赖 org.yaml.snakeyaml中的Yaml对象可以同时存储yml与yaml文件信息 <dependency><groupId>org.yaml&l ...

  2. 解决:SpringBoot 错误:Caused by: org.yaml.snakeyaml.scanner.ScannerException

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 错误: Caused by: org.yaml.snakeyaml.scanner.ScannerE ...

  3. pom.xml中解决Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.33警告

    警告出现 构建springboot3项目时,pom文件的spring-boot-starter-web依赖部分整体高亮, 显示Provides transitive vulnerable depend ...

  4. Provides transitive vulnerable dependency org.yaml:snakeyaml:1.33

    一.错误介绍 新创建了一个springboot3的项目,弹出警告. <parent><groupId>org.springframework.boot</groupId& ...

  5. java snakeyaml_JAVA使用SnakeYAML解析与序列化YAML

    1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档. 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven ...

  6. snakeyaml 简介、中文文档、中英对照文档 下载

    snakeyaml 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 snakeyaml-1.12.jar snakeyaml-1.12-API文档 ...

  7. snakeyaml数字字符串显示单引号的问题

    如题所示,一般yaml结构中,字符串直接显示没有单引号的字符串,如果字符串由数字组成,为了区别真正的数字,这个字符串会使用单引号包围起来. 数据结构如下: Map<String,Object&g ...

  8. SnakeYaml反序列化

    声明 出品|先知社区(ID:dawntown) 以下内容,来自先知社区的dawntown作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室 ...

  9. 漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

    项目介绍 YAML是一种数据序列化格式,设计用于人类的可读性和与脚本语言的交互. SnakeYaml是一个完整的YAML1.1规范Processor,支持UTF-8/UTF-16,支持Java对象的序 ...

  10. 顺利解决org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException!

      时隔上一篇博客的发布时间已经有将近1年的时间,感觉如果再不更新博客的话自己找个csdn博客就要生锈了!所以从这周开始,自己必须要逼自己每周至少发布1~2篇技术博客,欢迎大家对我保持积极监督!    ...

最新文章

  1. 动态规划--用最少的硬币类别找零钱
  2. Python 技术篇-百度语音识别API接口调用演示
  3. 嵌入式培训学习历程第二十二天
  4. SharePoint 2007/2010 的SPGridView 控件常见的两个问题
  5. Java Set集合
  6. php7 参数类型限定,PHP 7.4 新功能一览之参数和返回类型改进
  7. 1601 - The Morning after Halloween
  8. VScode使用gitbash的配置方法
  9. 第7章 使用Spring MVC构建Web程序(一)
  10. Centos7 搭建 hadoop3.1.1 集群教程
  11. 冯氏集团于进博会发布报告,分析影响全球服装采购格局的五大因素
  12. Java进阶 - MyBatis查询数据库 Spring Boot 单元测试 - 细节狂魔
  13. Android简单制作自定义圆形头像
  14. WSL2 安装 CUDA(Win11)
  15. JavaScript学习笔记(6)变量
  16. 导入Excel至数据库中 外部表不是预期格式错误信息
  17. Web在线客服系统源码
  18. 左移 右移 逻辑右移 算术右移
  19. Cortex-M3/M4学习随笔——一些处理器基本信息
  20. 变频器按启动没反应_变频器常见故障及处理

热门文章

  1. PCB封装尺寸-0402-0603-0805
  2. linux gif录制工具,Ubuntu中的Gif动画录制工具byzanz
  3. 深度学习之超分辨率算法——SRCNN
  4. 【056】历史性突破!翼辉信息助力星际荣耀火箭入轨!
  5. java aspect编译,Java-AspectJ无法编译
  6. 识别圆的强化RANSAC算法
  7. openCV视频教程
  8. 3dmax人物模型制作全的步骤
  9. 合批/批量渲染 (Batch)、实例化Instancing
  10. [SUCTF 2019]EasyWeb 1