重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇为JAVA自动化的第二篇章,主要为YAML的序列化与反序列化
主要讲述后续自动化中能够使用得部分,如果想了解更多可以查看官方文档
学习条件:JAVA基础部分
1.YAML文件开始行是—,这是YAML格式的一部分,表示YAML文件的开始
2.使用缩进表示层级关系,但是不允许使用tab,只能使用空格
3.缩进的空格数不重要,只要相同层级的元素左对齐即可
4.大小写是敏感的,#表示为注释,这个字符一直到尾行,会被忽略
information: {name: Kai, age: 25}
多行语法(一般多为多行语法,较为清晰)address:
name: Kai
age: 25
hobby: [吃饭, 睡觉, 打豆豆]
多行语法(一般多为多行语法,较为清晰)subject:
- 吃饭
- 睡觉
- 打豆豆
举例:name: Kai
age: 25
height: 180
isSingle: false
address:
province: 上海市
city: 徐汇区
hobby:
- 吃饭
- 睡觉
- 打豆豆
weight: null
Jackson处理YAMLJackson是一个功能强大得Java序列化库,除了YAML之外,还支持JSON,CSV,XML
Maven相关配置:https://mvnrepository.com 在此网站找到相关版本,或者直接复制下方
com.fasterxml.jackson.dataformat jackson-dataformat-yaml 2.13.3
相关使用ObjectMapper是序列化/反序列化操作的核心,Jackson的所有操作都是在ObjectMapper中实现
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
序列化:JAVA对象 -->YAML不管你是什么结构的对象,想转yaml,直接 objectMapper.writeValueAsString() 搞定。
对象转YAML//先准备一个学生类
package yaml;
public class Student {private String name;
private int age;
public Student() {}
public Student(String name, int age) {this.name = name;
this.age = age;
}
public String getName() {return name;
}
public void setName(String name) {this.name = name;
}
public int getAge() {return age;
}
public void setAge(int age) {this.age = age;
}
@Override
public String toString() {return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
//将对象转为YAML
package yaml;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
public class YamlDemo1 {public static void main(String[] args) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
Student student = new Student("Kai", 25);
String yaml = objectMapper.writeValueAsString(student);
System.out.println(yaml);
}
}
Map转YAMLpackage yaml;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.HashMap;
public class YamlDemo2 {public static void main(String[] args) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
HashMapmap = new HashMap<>();
map.put("test",1);
map.put("age",18);
String yaml = objectMapper.writeValueAsString(map);
System.out.println(yaml);
}
}
反序列化:YAML–>JAVA对象
YAML转对象package yaml;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
public class YamlDemo3 {public static void main(String[] args) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
String yaml= "{\"name\":\"Kai\",\"age\":\"25\"}";
Student student = objectMapper.readValue(yaml, Student.class);
//这里还支持传入yaml文件,可以将参数中的yaml切换为 new File("需要绑定的文件路径")
System.out.println(student);
}
}
YAML转Mappackage yaml;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.HashMap;
public class YamlDemo4 {public static void main(String[] args) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
String yaml= "{\"name\":\"Kai\",\"age\":\"25\"}";
HashMap hashMap = objectMapper.readValue(yaml, HashMap.class);
System.out.println(hashMap);
}
}
结尾本篇简单介绍了YAML和Jackson的简单用法,主要为后续JAVA自动化中做准备,如需关于Jackson的详细内容可查看官网
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧