一:JSON操作
JSON(JavaScript Object Notation, JavaScript 对象表示法) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
目前大部分接口是通过JSON传输数据的,所以要做接口测试/接口自动化测试必须要掌握对JSON的处理。
{“principal”:“lemon_auto”,“credentials”:“lemon123456”,“appType”:3,“loginType”:0}
JSON语法规则:
- 数据在键值对中
- 多条数据由逗号分隔
- 大括号 {} 保存对象
{
“name”: “tom”,
“age”: “26”
}
- 中括号 [] 保存数组
{
“hobby”: [“游戏”, “音乐”, “电影”]
}
JSON值的类型:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
例子:
{
“name”: “rose”,
“age”: 10,
“height”: 180.5,
“isSingle”: false,
“address”: {
“provinces”: “湖南省”,
“city”: “长沙”
},
“hobby”: [“游戏”, “音乐”, “电影”],
“weight”: null
}
Jackson技术处理JSON
- Jackson是一个功能强大的处理JSON的依赖,除了支持常用的JSON,同时还支持XML,CSV,YAML。
com.fasterxml.jackson.core jackson-databind 2.9.8
序列化与反序列化
- 把对象转换为字节序列的过程称为对象的序列化;把字节序列恢复为对象的过程称为对象的反序列化。
- 序列化:Java对象 --> JSON/YAML/XML
- 反序列化:JSON/YAML/XML --> Java对象
Jackson使用
- ObjectMapper(对象转换器)是序列化/反序列化操作的核心,Jackson的所有操作都是在ObjectMapper中实现
- ObjectMapper mapper = new ObjectMapper();
序列化:
1.对象转JSON
Student student = new Student(“张三”,18);
String json = mapper.writeValueAsString(student);
2.Map转JSON
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(“error”, 1);
map.put(“msg”, “系统错误”);
String json = mapper.writeValueAsString(map);
反序列化:
1.JSON转对象
String jsonStr = “{“name”:“张三”,“age”:18}”;
//JSON字符串转对象
Student student = mapper.readValue(jsonStr, Student.class);
//还可以支持将JSON文件转对象
Student student = mapper.readValue(new File(“data.json”), Student.class);
2.JSON转Map
String jsonStr = “{“name”:“张三”,“age”:18}”;
HashMap<String,Object> map = mapper.readValue(jsonStr, HashMap.class);
复杂JSON数据结构反序列化:
{
“name”: “lemon35”,
“students”: [{
“name”: “张三”,
“age”: 20
}, {
“name”: “李四”,
“age”: 18
}, {
“name”: “王五”,
“age”: 25
}]
}
二:IO流
IO流是Java操作文件读写的技术
I:input(输入流,读取文件内容到流对象)
O:output(输出流,写文件内容到文件)
分类:
字符流:一般是操作文本文件的读写(掌握)
字节流:一般是操作图片,视频,音频文件的读写(了解)
字符流
Reader:输入流/写入流
Writer:输出流/写出流
最常用的字符流:
BufferReader
readline():一次性读取一行
close():关闭输入流
BufferWriter
write():写内容
newLine():重新启一行
close():关闭输出流
字节流
InputStream:输入流/写入流
OutputStream:输出流/写出流
最常用的字节流:
FileInputStream
read(byte[] bytes):将数据读到bytes数组,返回实际读取数据大小size。
FileOutputStream
write(byte[] bytes,0,size ):将数组里的数据写到输出流,每次实际写的数据大小为上面读取数据的大小。
作业
1、使用IO流读取下述日志文件中的内容,并将每行日志中的[Appium]开头去掉,只保留日志主体内容输出到控制台
[Appium] Welcome to Appium v1.19.1
[Appium] Non-default server args:
[Appium] address: 127.0.0.1
[Appium] relaxedSecurityEnabled: true
[Appium] allowInsecure: {
[Appium] }
[Appium] denyInsecure: {
[Appium] }
[Appium] Appium REST http interface listener started on 127.0.0.1:4723
2、将以下json字符串进行反序列化:
(1)转HashMap集合
{“access_token”:“44f62406-f9e1-4033-8298-4e56a212fecf”,“token_type”:“bearer”,“expires_in”:1295999,“userId”:“da4a93de689046568d375be1b212da79”,“nickName”:“lemontester”,“enabled”:true}
(2)转Java普通对象
{“name”:“中国”,“provinces”:[{“name”:“黑龙江”,“capital”:“哈尔滨”},{“name”:“广东”,“capital”:“广州”},{“name”:“湖南”,“capital”:“长沙”}]}

2118

被折叠的 条评论
为什么被折叠?



