YAML(YAML Ain’t Markup Language)是一种用于配置文件的格式,它支持多种数据类型,易于人类阅读和编写。以下是YAML中常见的数据类型及其使用说明:
- 字符串
name: John Doe
Java代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "name: John Doe";
Map<String, Object> data = yaml.load(yamlContent);
System.out.println("Name: " + data.get("name"));
}
}
输出
Name: John Doe
- 列表(List)
fruits:
- apple
- banana
- cherry
java 代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "fruits:\n - apple\n - banana\n - cherry";
Map<String, List<String>> data = yaml.load(yamlContent);
List<String> fruits = data.get("fruits");
System.out.println("Fruits:");
for (String fruit : fruits) {
System.out.println("- " + fruit);
}
}
}
输出
Fruits:
- apple
- banana
- cherry
- Map
person:
name: John Doe
age: 28
java 代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "person:\n name: John Doe\n age: 28";
Map<String, Map<String, Object>> data = yaml.load(yamlContent);
Map<String, Object> person = data.get("person");
System.out.println("Name: " + person.get("name"));
System.out.println("Age: " + person.get("age"));
}
}
输出
Name: John Doe
Age: 28
- 复合结构
people:
- name: John Doe
age: 28
- name: Jane Doe
age: 25
java代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "people:\n - name: John Doe\n age: 28\n - name: Jane Doe\n age: 25";
Map<String, List<Map<String, Object>>> data = yaml.load(yamlContent);
List<Map<String, Object>> people = data.get("people");
for (Map<String, Object> person : people) {
System.out.println("Name: " + person.get("name"));
System.out.println("Age: " + person.get("age"));
}
}
}
输出
Name: John Doe
Age: 28
Name: Jane Doe
Age: 25
- 注释
# This is a comment
name: John Doe # Inline comment
- 多行字符串
block_style: |
Line 1
Line 2
Line 3
flow_style: >
Line 1
Line 2
Line 3
java代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "block_style: |\n Line 1\n Line 2\n Line 3\n" +
"flow_style: >\n Line 1\n Line 2\n Line 3";
Map<String, Object> data = yaml.load(yamlContent);
System.out.println("Block Style:\n" + data.get("block_style"));
System.out.println("Flow Style:\n" + data.get("flow_style"));
}
}
输出
Block Style:
Line 1
Line 2
Line 3
Flow Style:
Line 1
Line 2
Line 3
- 布尔和Null的简写
is_active: true
middle_name: null
java代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "is_active: true\nmiddle_name: null";
Map<String, Object> data = yaml.load(yamlContent);
System.out.println("Is Active: " + data.get("is_active"));
System.out.println("Middle Name: " + data.get("middle_name"));
}
}
输出
Is Active: true
Middle Name: null
- 锚点和别名
defaults: &defaults
adapter: postgres
database: rails
development:
database: dev_db
<<: *defaults
java代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "defaults: &defaults\n adapter: postgres\n database: rails\n" +
"development:\n database: dev_db\n <<: *defaults";
Map<String, Object> data = yaml.load(yamlContent);
Map<String, Object> defaults = (Map<String, Object>) data.get("defaults");
Map<String, Object> development = (Map<String, Object>) data.get("development");
System.out.println("Defaults Adapter: " + defaults.get("adapter"));
System.out.println("Defaults Database: " + defaults.get("database"));
System.out.println("Development Database: " + development.get("database"));
System.out.println("Development Adapter: " + development.get("adapter"));
}
}
输出
Defaults Adapter: postgres
Defaults Database: rails
Development Database: dev_db
Development Adapter: postgres
- 合并多个键
defaults: &defaults
adapter: postgres
database: rails
person:
name: John Doe
<<: *defaults
java代码
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
String yamlContent = "defaults: &defaults\n adapter: postgres\n database: rails\n" +
"person:\n name: John Doe\n <<: *defaults";
Map<String, Object> data = yaml.load(yamlContent);
Map<String, Object> person = (Map<String, Object>) data.get("person");
System.out.println("Name: " + person.get("name"));
System.out.println("Adapter: " + person.get("adapter"));
System.out.println("Database: " + person.get("database"));
}
}
输出
Name: John Doe
Adapter: postgres
Database: rails