基础知识
先了解ymal中的组织形式,这篇文章很不错:
https://www.cnblogs.com/sddai/p/9626392.html
demo
ymal文件
age: 18
say: hellp
height: 180
#sports: basketball,football,pingpongball # not supported this way of writing
sports: [basketball, football, pingpongball]
foods:
- noodles
- hamburger
#idols: # not supported this way of writing
# idol:
# - name: Roger Federer
# height: 185
# gender: male
# - name: Steve Jobs
# height: 188
# gender: male
idols:
- name: Roger Federer
height: 185
gender: male
- name: Steve Jobs
height: 188
gender: male
teachers:
- { name: Ms. Liu, height: 165, gender: female}
- { name: Mr. Li, height: 174, gender: male}
引入yml解析包:
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.27</version>
</dependency>
主类:
public class YmlLoadTest {
public static void main(String[] args) {
String path = "F:\\CmdArgsResolution\\src\\main\\resources\\configs\\config.yml";
YmlPojo ymlPojo = YmlLoader.loadFile(path, YmlPojo.class);
System.out.println(ymlPojo);
}
}
工具类:
package org.jfqqqq.test.util;
import org.yaml.snakeyaml.Yaml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class YmlLoader {
public static <T>T loadFile(String path, Class<T> clazz) {
Yaml yaml = new Yaml();
try {
InputStream inputStream = new FileInputStream(path);
return yaml.loadAs(inputStream, clazz);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
pojo若干:
public class YmlPojo extends Arg {
private String[] sports;
private List<String> foods;
private List<Idol> idols;
private Teacher[] teachers;
public String[] getSports() {
return sports;
}
public void setSports(String[] sports) {
this.sports = sports;
}
public List<String> getFoods() {
return foods;
}
public void setFoods(List<String> foods) {
this.foods = foods;
}
public List<Idol> getIdols() {
return idols;
}
public void setIdols(List<Idol> idols) {
this.idols = idols;
}
public Teacher[] getTeachers() {
return teachers;
}
public void setTeachers(Teacher[] teachers) {
this.teachers = teachers;
}
@Override
public String toString() {
String toString = super.toString();
return toString + "YmlPojo{" +
"sports=" + Arrays.toString(sports) +
", foods=" + foods +
", idols=" + idols +
", teachers=" + Arrays.toString(teachers) +
'}';
}
}
public class Human {
private String name;
private Integer height;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getHeight() {
return height;
}
public void setHeight(Integer height) {
this.height = height;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Human{" +
"name='" + name + '\'' +
", height=" + height +
", gender='" + gender + '\'' +
'}';
}
}
public class Idol extends Human{
}
public class Teacher extends Human{
}
打印结果:
Arg{age=18, say='hellp', height=180}YmlPojo{sports=[basketball, football, pingpongball], foods=[noodles, hamburger], idols=[Human{name='Roger Federer', height=185, gender='male'}, Human{name='Steve Jobs', height=188, gender='male'}], teachers=[Human{name='Ms. Liu', height=165, gender='female'}, Human{name='Mr. Li', height=174, gender='male'}]}