java中snakeyaml工具包操作yaml文件,什么是yaml文件,yaml如何解析转换为实体,实体如何生成yaml文件
什么是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文件相关推荐
- java中的IO操作总结
java中的IO操作 在java中IO涉及的范围比较大,本文主要针对文件内容的读写 对于文件内容的操作主要分为两大类: 字符流:有两个抽象类 writer Reader 其对应子类FileWriter ...
- java中使用lua操作redis
java中使用lua脚本参见我的上一篇文章 lua基础 本篇简单说下java中使用lua操作redis的示例,如下: 先引入jedis <dependency><groupId> ...
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式详解与比较(转) http://wishlife.javaeye.com/blog/181865 posted on 2010-12 ...
- 深圳软件测试培训:java中数组的操作
深圳软件测试培训:java中数组的操作 一.数组最常见的一个操作就是遍历. 因为数组的每个元素都可以通过索引来访问,通过for循环就可以遍历数组. public class M { public st ...
- java中io流如何创建一个文件_,Java中Io流操作-File类的常用操作-创建文件,创建文件夹...
package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...
- Java中使用JCOM操作Word/Excel对象
通过使用COM技术,我们用微软Office应用程序能够建立很多应用程序扩展,但是Java开发人员却无法享受它带来的便利--除非他们拥有方便的Java访问COM的途径(Java-to-COM桥).使用J ...
- java中的IO操作总结(一)
转载:http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.html 所谓IO,也就是Input与Output的缩写.在java中 ...
- java中的IO操作之File类
Java的集合框架: 类和接口存在于java.util包中. Java的IO: 类和接口存在于java.io包中. 学习方法: 文档在手,天下我有! --------- ...
- java中使用Jedis操作Redis实例
要想在Java中连接Redis,并进行操作,由两种方式,一种是spring data redis,它是由spring集成的,不支持集群,一种是官方推荐的jedis,支持集群,其他功能差不多一样, 这里 ...
最新文章
- SAP CRM商机页面上赢单原因的字段是怎么配出来的
- axios取消功能的设计与实现
- MFC中常见控件的操作
- 免费证书https://lamp.sh/ssl.html
- 历史上的今天:ATT 成立;全球最大分布式计算项目正式停止;家酿俱乐部首次会议...
- CF1110G Tree-Tac-Toe 博弈论、构造
- 加速晶圆代工业务创新 开创智能互联世界
- ​发那科机器人PROFINET 主站配置
- java开发自学手册 pdf_Java项目开发实例自学手册 PDF_IT教程网
- 两台电脑如何共享文件
- msp430发送pwm信号_MSP430F149学习之路——PWM信号
- 冰汽朋克侦查机器人_冰汽时代机器流玩法 寒霜朋克机器人流玩法怎么玩
- 若语句char a = ‘\72‘; 则变量a包含几个字符?‘\72‘是否在ASCII值的范围之内?
- android go 小米1,小米首款Android Go入门机红米Redmi Go发布,1GB+8GB运存
- Centos7.3安装TP-LINK驱动 TL-WDN5200H
- 桂林电子科技大学校园网自动登录
- 认证资料大全(八)------ SUN认证列表
- 【分治】大整数乘法(C++)
- 校园网络的未来发展方向
- learnpythonthehardway.org_Python学习笔记LearnPythonHardWay