json是一种文本数据交换格式,不是一种语言
jsonpath是一种语法,用于json数据,类似xpath用于html
1.json.dumps json.loads
需要import json
json.dumps——将python数据转化为json数据
实际上就是将python里面的字典转化成json格式的数据
只有json数据(字符串)能写入文件,如果将未转化的python字典数据写入文件,则会报错
json.dumps相当于dict转化为字符串,跟str(dict_name)类似
只不过用json.dumps转化字符串时,会按照json标准格式,比如将单引号变成双引号
参数:
json.dumps(dict_data , ensure_ascii = False(显示中文),indent = 2(缩进长度))
json.loads——将json数据转化成python字典
只有通过json.loads处理后,python里面才可以操作这个数据
2. json.dump json.load(直接用于文件对象操作)
json.dump 自带写入功能,用于将python字典直接写入文件
json.dump ——1.json.dumps 将python字典转化成json字符串
2. write() 将json字符串写入文件
with open("temp.txt","w") as f:json.dump(mydict,f,ensure_ascii=False,indent=2)# 相当于下面先用json.dumps将字典转化成json字符串,然后再将json字符串写入
json_data = json.dumps(mydict,ensure_ascii=False,indent=2)
with open('temp.txt','w') as f:f.write(json_data)
json.load 直接从json文件中读取数据,并将读取的json字符串数据转化成python字典,得到的字典Python里面可以直接操作
json.load —— 1. read()读取出字符串数据
2.json.load 将字符串数据转换成python字典
with open("temp.txt","r") as f:my_dict = json.load(f)# 相当于先读取文件内容为字符串,再将字符串转化成python字典
with open('temp.txt','r') as f:json_data = f.read()
my_dict = json.loads(json_data)
之所以要提供两组dumps,loads和dump,load ,就是为了方便在对json文件进行读写操作时省去一些关于读写的代码 dump=dumps+write(),load=read()+loads
记不住 只需要记住s——str,代表字符串,另一种自然就是对应的json文件对象
jsonpath
需要import jsonpath
变量名= jsonpath.jsonpath(python字典对象,' jsonpath语法表达式 ' ) 调用
返回的是一个列表

| JSONPath | Result |
|---|---|
$.store.book[*].author | store中的所有的book的作者 |
$..author | 所有的作者 |
$.store.* | store下的所有的元素 |
$.store..price | store中的所有的内容的价格 |
$..book[2] | 第三本书 |
$..book[(@.length-1)] | $..book[-1:] | 最后一本书 |
$..book[0,1] | $..book[:2] | 前两本书 |
$..book[?(@.isbn)] | 获取有isbn的所有数 |
$..book[?(@.price<10)] | 获取价格大于10的所有的书 |
$..* | 获取所有的数据 |
3.requests里的json()方法
如果确定requests.get()得到的响应对象是json格式
可以直接调用requests的json()方法,就可以直接得到python字典数据
py_dict_name = requests.get( url , .......).json()
这里的json()是requests里的方法,不需要import json
response_user = requests.get(url,headers=headers_user)py_data = response_user.json()
# json()是一个方法,不是import导入的json模块 直接得到python格式的数据,自动转换类型
res_ = jsonpath.jsonpath(py_data, '$..A[1].name')
















