大家好,欢迎来到IT知识分享网。
YML解析框架SnakeYaml简介
1. SnakeYaml概述
1.1 yml简介
yaml简称yml,什么是yml,官方解释说,yml不是标记性语言,YAML 是一种人性化的数据序列化,适应所有编程语言的语言。
1.2 SnakeYaml简介
SnakeYaml就是用于解析YAML,序列化以及反序列化的第三方框架,解析yml的三方框架有很多,SnakeYaml,jYaml,Jackson等,但是不同的工具功能还是差距较大,比如jYaml就不支持合并(<<)和(—)操作。
2. SnakeYaml实现验证
2.1 snakeyml依赖
mvn仓库地址:https://mvnrepository.com/artifact/org.yaml/snakeyaml/1.30
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml --> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.30</version> </dependency>
2.2 snakeyml实现验证
DataSource
/ * @author zrj * @since 2022/1/25 / @Data public class DataSource {
private String url; private String username; private String password; }
SnakeYamlTest
import org.junit.Test; import org.yaml.snakeyaml.Yaml; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; / * snake yml测试 * * @author zrj * @since 2022/1/25 / public class SnakeYamlTest {
/ * 解析yml字符串 */ @Test public void ymlStrTest() {
Yaml yaml = new Yaml(); //实际上返回的是LinkedHashMap Object ret = yaml.load("name: jerry"); System.out.println(ret); } / * 解析yml文件 */ @Test public void ymlFileTest() {
Yaml yaml = new Yaml(); //java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List Object ret = yaml.load(this.getClass().getClassLoader().getResourceAsStream("snake.yml")); System.out.println(ret); } / * 解析yml文件转对象 */ @Test public void testAddress() {
Yaml yaml = new Yaml(); DataSource ret = yaml.loadAs(this.getClass().getClassLoader().getResourceAsStream("source.yml"), DataSource.class); System.out.println(ret); } / * 创建yml字符串 */ @Test public void testDump1() {
Map<String, Object> obj = new HashMap<String, Object>(); obj.put("name", "Jerry"); obj.put("age", 30); Yaml yaml = new Yaml(); StringWriter sw = new StringWriter(); yaml.dump(obj, sw); System.out.println(sw.toString()); } @Test public void testDump2() {
DataSource dataSource = new DataSource(); dataSource.setUsername("jerry"); dataSource.setPassword(""); dataSource.setUrl("http://hello.com"); Yaml yaml = new Yaml(); StringWriter sw = new StringWriter(); yaml.dump(dataSource, sw); System.out.println(sw.toString()); } }
snake.yml
# 该文件配置会继承bootstrap.xml,只需要配置数据库等差异配置 spring: datasource: url: jdbc:mysql://127.0.0.1:3306 username: root password:
source.yml
url: jdbc:mysql://127.0.0.1:3306 username: root password:
参考文档:JAVA使用SnakeYAML解析与序列化YAML
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/102331.html