JSON(Javascript Object Notation氧秘,即JavaScript對象表示法)是一種輕量級的數(shù)據(jù)交換格式。它獨(dú)立于語言和平臺令漂,JSON解析器和JSON庫支持不同的編程語言。JSON具有自我描述性,很容易理解辟汰。目前大多數(shù)接口返回的數(shù)據(jù)格式為JSON,因此進(jìn)行接口測試必須掌握J(rèn)SON阱佛。
JSON語法
語法規(guī)則
- 數(shù)據(jù)在鍵/值對中
- 數(shù)據(jù)由逗號分隔
- {花括號}保存對象
- [方括號]保存數(shù)組
JSON鍵/值對
JSON數(shù)據(jù)的書寫格式是 key:value鍵值對帖汞。比如:
“Name”:“51zxw”
JSON值可以是:
- 數(shù)字(整數(shù)或浮點(diǎn)數(shù))
- 字符串(在雙引號中)
- 邏輯值(true 或 false)
- 數(shù)組(在方括號中)
- 對象(在花括號中)
- null
JSON數(shù)字
"status_code":200
JSON字符串
“Name”:“51zxw”
JSON邏輯值
“result”:true
JSON數(shù)組
“user”:[“51zxw”,“zxw2021”凑术,“zxw666”]
JSON 對象
JSON對象在花括號中書寫:對象可以包含多個鍵/值對:
{“firstName”:“John”翩蘸,“l(fā)astName”:“Doe”}
Tips:在接口測試過程中,一般都是返回JSON對象類型淮逊。
JSON數(shù)據(jù)嵌套
比如在數(shù)組中含有多個對象:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
在上面的例子中催首,對象 "employees" 是包含三個對象的數(shù)組。每個對象代表一條關(guān)于某人(有姓和名)的記錄泄鹏。
JSON數(shù)據(jù)解析
Python3中可以使用json模塊來對JSON數(shù)據(jù)進(jìn)行編解碼郎任,它包含了兩個方法:
- json.dumps():將python數(shù)據(jù)轉(zhuǎn)化為json數(shù)據(jù)
- json.loads():將json數(shù)據(jù)類型轉(zhuǎn)為Python數(shù)據(jù)類型
JSON庫官方文檔 https://docs.python.org/3/library/json.html
json.dumps()
將python數(shù)據(jù)轉(zhuǎn)化為json數(shù)據(jù)
import json data={'id':1,'name':'52zxw','password':'666'} print(type(data)) json_str=json.dumps(data) print(type(json_str)) print(json_str)
輸出結(jié)果:
<class 'dict'=""></class>
<class 'str'=""></class>
{"id": 1, "name": "52zxw", "password": "666"}
json.loads()
將json數(shù)據(jù)類型轉(zhuǎn)為python數(shù)據(jù)類型
import json json_str='{"id":1,"name":"51zxw","password":"666"}' print(type(json_str)) data=json.loads(json_str) print(type(data)) print(data) print(data["id"])
輸出結(jié)果:
<class 'str'=""></class>
<class 'dict'=""></class>
{'id': 1, 'name': '51zxw', 'password': '666'}
1
JSON文件處理
有時我們可能需要將JSON數(shù)據(jù)寫入到文件,或者從Json數(shù)據(jù)文件讀取數(shù)據(jù):
寫入 JSON 數(shù)據(jù)到文件
with open('data.json','w') as f: json.dump(data,f)
讀取JSON數(shù)據(jù)文件
with open('data.json','r') as f: data=json.load(f) print(data)