[PPJ_03] JSON数据解析 & 文件处理
2018-10-03 本文已影响50人
Fighting_001
目录结构
一、JSON简介
1. JSON概念
2. JSON语法
3. JSON值的类型
二、JSON数据解析
1. Python数据类型 ==> Json数据类型
2. Json数据类型 ==> Python数据类型
三、JSON文件处理
1. 将JSON数据写入到文件中
2. 从JSON文件中读取数据
一、JSON简介
1. JSON概念
JSON:(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。它独立于语言和平台,JSON解析器和JSON库支持不同的编程语言。JSON具有自我描述性,很容易理解。目前大多数接口返回的数据格式为JSON,因此进行接口测试必须掌握JSON。
2. JSON语法
语法规则:
- 数据在键/值对中
- 数据由逗号分隔
- 花括号
{}
保存对象 - 方括号
[]
保存数组 - JSON键/值对-书写格式:
key:value
如:"name":"Bob"
3. JSON值的类型
- 数字(整数or浮点数)
- 字符串(在双引号
""
中) - 逻辑值(true / false)
- 数组(在方括号
[]
中) - 对象(在花括
{}
中) - null
1)JSON数字
"status_code":200
2)JSON字符串
"city":"Chengdu"
3)JSON逻辑值
"result":true
4)JSON数组
"user":["test00001","test00002","test00003"]
5)JSON对象
JSON对象在花括号{}
中书写,对象可以包含多个键/值对:
{"firstlane":"John","lastlame":"Doe")
PS:在接口测试过程中,一般都是返回JSON对象类型。
6)JSON数据嵌套
比如在数组中含多个对象:
{
"cmployees":[
{"firstName":"John","lastlame":"Doe"},
{"firstName":"Anna","lastlame":"Smith"},
{"firstName":"Peter","lastName":"Jones"}
]
}
在上面的例子中,对象"employees"是包含3个对象的数组,每个对象代表1条关于某人(firstName+lastName)的记录。
二、JSON数据解析
Python3可使用json模块对JSON数据进行编码和解码,包含有2个方法:
- json.dumps:Python数据类型-->Json数据类型
- json.loads:Json数据类型-->Python数据类型
1. Python数据类型 ==> Json数据类型
json.dumps() 函数
# 导入json
import json
# 定义一个字典变量data
data = {'id':1,'name':'test00001','password':'123456'}
# 打印data的数据类型
print(type(data))
# 定义变量,将Python数据转换为JSON数据,存储到该变量
json_str = json.dumps(data)
# 打印转换后的数据类型
print(type(json_str))
# 打印转换后的数据内容
print(json_str)
执行结果:
<class 'dict'>
<class 'str'>
{"id": 1, "name": "test00001", "password": "123456"}
从上通俗理解:
json.dumps() 函数实现:字典(dict) ==> 字符串(str)
2. Json数据类型 ==> Python数据类型
json.loads() 函数
import json
# 定义json类型的字符串
json_str = '{"id":1,"name":"test00001","password":"123456"}'
# 将Json类型转换为Python类型,存储到data变量中
data = json.loads(json_str)
print(type(json_str)) # 打印转换前的数据类型
print(type(data)) # 打印转换后的数据类型
print(data) # 打印转换后的数据内容
print(data['id'])
print(data['name'])
执行结果:
<class 'str'>
<class 'dict'>
{'id': 1, 'name': 'test00001', 'password': '123456'}
1
test00001
从上通俗理解:
json.loads() 函数实现:字符串(str) ==> 字典(dict)
三、JSON文件处理
使用场景:将JSON数据写入到文件中,or从JSON文件中读取数据
1. 将JSON数据写入到文件中
json.dump() 函数
import json
# Python数据-->JSON数据
data = {'id':1,'name':'test00001','password':'123456'}
json_str = json.dumps(data)
# 写入json数据到指定文件中(无则创建)
with open('data.json','w') as f:
json.dump(data,f)
执行结果:
在当前目录下创建了一个json格式文件data.json
,并将其前转换的json数据写入到了该文件中
2. 从JSON文件中读取数据
json.load() 函数
import json
# 从data.json文件中读取JSON数据
with open('data.json','r') as f:
data = json.load(f)
print(data)
执行结果:
{'id': 1, 'name': 'test00001', 'password': '123456'}
参考资料:
[1] JSON库官方文档-JSON encoder and decoder