什么是yaml文件

这里就不去搞yaml的书面意思了,其实就可以理解为一种数据文件,里面的数据是以键值对的方式存储的。java中map就是键值对的形式,我们带着这个概念去理解。举个例子:

school:classroom:student:- 小明- 小红teacher: 老王playground:- 足球场- 篮球场

school有两个属性:classroom和playground
class有两个属性:student和teacher
对应的java实体就是这样的:

public class YamlPojo {private School school;public static class School {private Classroom classroom;private List<String> playground;}public static class Classroom {private List<String> student;private String teacher;}
}

这样呢,就把yaml文件和java实体对应了起来,有了对应关系,接下来就是通过snakeyaml来进行操作了。
当然,少不了依赖哦,我用的1.26版本,相对稳定,其他版本的也满足使用需求

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

snakeyaml解析yaml文件

如何将yaml文件转成java实体呢,超级简单啦,上代码!

File file = new File("yaml文件路径");
Yaml yaml = new Yaml();
YamlPojo yamlPojo = yaml.loadAs(new FileReader(file), YamlPojo.class);

这样就ok啦!

snakeyaml通过java实体生成yaml文件

snakeyaml生成的yaml文件会有标准的缩进,我们不用关心格式问题,只关心实体类即可

File file = new File("yaml文件路径"); //这里会覆盖原文件哦,所以如果有编辑yaml文件的需求,就是先解析,修改值,然后写入。
Yaml yaml = new Yaml();
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(yaml.dumpAsMap(yamlPojo)); //yamlPojo是我们的实体类对象,自行生成即可
fileWriter.close();

一些小问题

如果实体里有属性的值是空,生成的yaml文件里面就会是null,如下:怎么转储空字段呢?

school:classroom:student:- 小明- 小红teacher: nullplayground:null

我们可以自定义null值的输出形式:

public void test() {DumperOptions options = new DumperOptions();options.setDefaultFlowStyle(FlowStyle.BLOCK);Yaml yaml = new Yaml(new NullRepresenter(), options);FileWriter fileWriter = new FileWriter(file);fileWriter.write(yaml.dumpAsMap(yamlPojo)); //yamlPojo是我们对应的实体类对象,自行生成即可fileWriter.close();
}public class NullRepresenter extends Representer {public NullRepresenter() {super();this.nullRepresenter = new RepresentNull();}private class RepresentNull implements Represent {public Node representData(Object data) {return representScalar(Tag.NULL, "");}}
}

这样输出的yaml就是这样的了:

school:classroom:student:- 小明- 小红teacher:playground:

java中snakeyaml工具包操作yaml文件,什么是yaml文件,yaml如何解析转换为实体,实体如何生成yaml文件相关推荐

  1. java中的IO操作总结

    java中的IO操作 在java中IO涉及的范围比较大,本文主要针对文件内容的读写 对于文件内容的操作主要分为两大类: 字符流:有两个抽象类 writer Reader 其对应子类FileWriter ...

  2. java中使用lua操作redis

    java中使用lua脚本参见我的上一篇文章 lua基础 本篇简单说下java中使用lua操作redis的示例,如下: 先引入jedis <dependency><groupId> ...

  3. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)

    java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式详解与比较(转) http://wishlife.javaeye.com/blog/181865 posted on 2010-12 ...

  4. 深圳软件测试培训:java中数组的操作

    深圳软件测试培训:java中数组的操作 一.数组最常见的一个操作就是遍历. 因为数组的每个元素都可以通过索引来访问,通过for循环就可以遍历数组. public class M { public st ...

  5. java中io流如何创建一个文件_,Java中Io流操作-File类的常用操作-创建文件,创建文件夹...

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  6. Java中使用JCOM操作Word/Excel对象

    通过使用COM技术,我们用微软Office应用程序能够建立很多应用程序扩展,但是Java开发人员却无法享受它带来的便利--除非他们拥有方便的Java访问COM的途径(Java-to-COM桥).使用J ...

  7. java中的IO操作总结(一)

    转载:http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.html    所谓IO,也就是Input与Output的缩写.在java中 ...

  8. java中的IO操作之File类

    Java的集合框架:  类和接口存在于java.util包中. Java的IO:               类和接口存在于java.io包中. 学习方法:  文档在手,天下我有! --------- ...

  9. java中使用Jedis操作Redis实例

    要想在Java中连接Redis,并进行操作,由两种方式,一种是spring data redis,它是由spring集成的,不支持集群,一种是官方推荐的jedis,支持集群,其他功能差不多一样, 这里 ...

最新文章

  1. SAP CRM商机页面上赢单原因的字段是怎么配出来的
  2. axios取消功能的设计与实现
  3. MFC中常见控件的操作
  4. 免费证书https://lamp.sh/ssl.html
  5. 历史上的今天:ATT 成立;全球最大分布式计算项目正式停止;家酿俱乐部首次会议...
  6. CF1110G Tree-Tac-Toe 博弈论、构造
  7. 加速晶圆代工业务创新 开创智能互联世界
  8. ​发那科机器人PROFINET 主站配置
  9. java开发自学手册 pdf_Java项目开发实例自学手册 PDF_IT教程网
  10. 两台电脑如何共享文件
  11. msp430发送pwm信号_MSP430F149学习之路——PWM信号
  12. 冰汽朋克侦查机器人_冰汽时代机器流玩法 寒霜朋克机器人流玩法怎么玩
  13. 若语句char a = ‘\72‘; 则变量a包含几个字符?‘\72‘是否在ASCII值的范围之内?
  14. android go 小米1,小米首款Android Go入门机红米Redmi Go发布,1GB+8GB运存
  15. Centos7.3安装TP-LINK驱动 TL-WDN5200H
  16. 桂林电子科技大学校园网自动登录
  17. 认证资料大全(八)------ SUN认证列表
  18. 【分治】大整数乘法(C++)
  19. 校园网络的未来发展方向
  20. learnpythonthehardway.org_Python学习笔记LearnPythonHardWay

热门文章

  1. 手机信号强度单位dB、dBm和asu
  2. 对接wayfair API
  3. [HBZ分享] 小米手机如何解BL锁
  4. 使用ST TOOLS的STVP烧写程序快速入门
  5. C++ main函数及main函数的参数
  6. Java 银行卡和身份证号根据校验位验证是否合法
  7. bugku_misc_三色绘恋
  8. [上海 南京]招聘.net web开发人员
  9. 明说PHPCMS(一)
  10. idea创建一个springboot多模块项目之springcloud简单项目测试