JAVA 解析 YML

发布于 更新于
本文目录
  1. YAML介绍
  2. YAML语法规则:
  3. YAML值类型:
  4. YAML序列化与反序列化
  5. 相关使用:
  6. 序列化:
  7. 1.对象转YAML
  8. 2.Map转YAML
  9. 反序列化:
  10. 1.YAML转对象
  11. 2.YAML转Map

技术文章测试开发

YAML 是一种比JSON更直观的表现形式数据序列化的语言,特别适合用来表达或编辑数据结构、各种配置文件,既可以以.yaml结尾,也可以.yml结尾。

YAML介绍

YAML 是一种比JSON更直观的表现形式数据序列化的语言,特别适合用来表达或编辑数据结构、各种配置文件,既可以以.yaml结尾,也可以.yml结尾。

YAML语法规则:

  • YAML 文件开始行是 ---,这是 YAML 格式的一部分, 表明一个文件的开始。

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进时不允许使用Tab键,只允许使用空格。

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • #表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML值类型:

  • 字符串(默认不用加引号,包含空格或特殊字符必须加引号,单引号或双引号都可以)

  • 布尔值( true或者false)

  • 数字(整数或浮点数)

  • null(可用null或者~)

  • 对象

    单行语法:

    address: {province: 湖南省, city: 长沙市}

    多行语法(建议):

    address:
        province: 湖南省
        city: 长沙市
  • 数组

    单行语法:

    subject: [语文, 英语]

    多行语法(建议):

    subject:
      - 语文
      - 英语

例子:

name: 张三
age: 20
height: 179.9
isSingle: false
address:
  province: 湖南省
  city: 长沙市
hobby:
  - 游戏
  - 电影
  - 旅游
weight: null

YAML序列化与反序列化

Jackson提供了YAMLFactory,可以方便解析YAML,通过ObjectMapper核心类操作YAML文件

<dependency>
     <groupId>com.fasterxml.jackson.dataformat</groupId>
     <artifactId>jackson-dataformat-yaml</artifactId>
     <version>2.10.2</version>
</dependency>

相关使用:

生成ObjectMapper对象

ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());

序列化:

1.对象转YAML

Student student = new Student("张三",18);
String str = mapper.writeValueAsString(student);

2.Map转YAML

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("error", 1);
map.put("msg", "系统错误");
String str = mapper.writeValueAsString(map);

反序列化:

1.YAML转对象

String yamlStr = "name: \"张三\"\n" +
                "age: 111\n";
//转Java对象
Student student = mapper.readValue(yamlStr, Student.class);
//还可以支持将YAML文件转对象
Student student = mapper.readValue(new File("data.yaml"), Student.class);

2.YAML转Map

String yamlStr = "name: \"张三\"\n" +
                "age: 111\n";
HashMap hashMap = mapper.readValue(yamlStr, HashMap.class);

来源:testingpai

继续阅读