YAML格式详解

1.基本语法

  1. 区分大小写。
  2. "#"到行尾都是注释部分。
  3. 使用空格表示层级关系(多少空格无所谓对齐就行)。
  4. 内容格式 key: value,注意 冒号后面必须一个空格才能写值。
  5. 字符串默认不用加单引号和双引号。
  6. 双引号:不会转义里面的特殊字符,单引号会转移里面的字符。

2.数据结构的表示实例

1.Map数据结构

java表示


public class Application {

    private Map<String, Object> maps;
}

对应yaml格式

maps:
  name: zhangsan
  age: 12

2.List数据结构

java表示

public class Application {
    private String[] icons;
    private List<Integer> ages ;

对应yaml格式

# 数组
icons:
  - aaa  #数组第0个元素
  - bbb  #数组第一个元素
# list
ages:
  - 10
  - 20

3.对象数据结构
java

public class Application {
    private Person person;
}

public class Person {
    private int age;
    private Map<String, String> maps;
    private String host;
}

yaml表示

#对象
person:
  age: 12
  maps:
    aa: aaa
    bb: bb
  host: 127.0.0.1

3.java解析yaml

这里我们用* yamlbeans* 来解析yaml文件,变成对应的pojo

    <dependency>
            <groupId>com.esotericsoftware.yamlbeans</groupId>
            <artifactId>yamlbeans</artifactId>
            <version>1.12</version>
        </dependency>
public class Application {

    private Map<String, Object> maps;

    private String[] icons;

    private List<Integer> ages;

    private Person person;

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setIcons(String[] icons) {
        this.icons = icons;
    }

    public String[] getIcons() {
        return icons;
    }

    public void setAges(List<Integer> ages) {
        this.ages = ages;
    }

    public List<Integer> getAges() {
        return ages;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public static void main(String[] args) throws FileNotFoundException, YamlException {
        YamlReader reader = new YamlReader(new FileReader("C:\\Users\\皮吉\\Desktop\\中转站\\application.yml"));
        Application app = reader.read(Application.class);
        System.out.println(app);
    }

    @Override
    public String toString() {
        return "Application{" +
                "maps=" + maps +
                ", icons=" + Arrays.toString(icons) +
                ", ages=" + ages +
                ", person=" + person +
                '}';
    }
}
public class Person {

    private int age;

    private Map<String, String> maps;

    private String host;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Map<String, String> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", maps=" + maps +
                ", host='" + host + '\'' +
                '}';
    }
}

yaml文件

# map数据结构
maps:
  name: zhangsan
  age: 12
# 数组
icons:
  - aaa  #数组第0个元素
  - bbb  #数组第一个元素
# list
ages:
  - 10
  - 20
#对象
person:
  age: 12
  maps:
    aa: aaa
    bb: bb
  host: 127.0.0.1

运行上面的Application类,会将yaml文件配置的值赋值到Application类的字段中,是不是相当方便。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值