1.基本语法
- 区分大小写。
- "#"到行尾都是注释部分。
- 使用空格表示层级关系(多少空格无所谓对齐就行)。
- 内容格式 key: value,注意 冒号后面必须一个空格才能写值。
- 字符串默认不用加单引号和双引号。
- 双引号:不会转义里面的特殊字符,单引号会转移里面的字符。
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类的字段中,是不是相当方便。