简介
JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具
文档
http://goessner.net/articles/JsonPath
安装
pip install jsonpath
使用
注意:这里的json_data为python数据,如列表,字典
data = jsonpath.jsonpath(json_data, 匹配规则)
路径操作符
$ 根对象
. 选择当前层级的属性或数组元素
.. 选择所有符合条件的条件
* 通配符,匹配任意属性或数组元素
其余
@ 现行节点
n/a 取父节点,Jsonpath未支持
n/a 根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要。
[,] 支持迭代器中做多选。
?() 支持过滤操作.
() 支持表达式计算
n/a 分组,JsonPath不支持
import jsonpath
json_dict_data = {
"name": "John",
"age": 30,
"cities": ["New York", "London"],
"scores": {
"math": 90,
"english": 85,
"science": 95
},
"isNullValue": None
}
# 提取根对象下的 name 属性值
result_name = jsonpath.jsonpath(json_dict_data, "$.name")
print(result_name)
# 提取根对象下 cities 数组的第一个元素
result = jsonpath.jsonpath(json_dict_data, "$.cities[0]")
print(result)
# 提取根对象下 scores 对象的math属性值
result = jsonpath.jsonpath(json_dict_data, "$.scores.math")
print(result)
import json
import jsonpath
from urllib.request import Request, urlopen
from fake_useragent import UserAgent
def cra1_1():
url = 'http://xxx:8031/front/website/findAllTypes'
headers = {'User-Agent': UserAgent().chrome}
requests = Request(url, headers=headers)
resp = urlopen(requests)
result = json.loads(resp.read().decode())
data1 = jsonpath.jsonpath(result, '$.code')
print(data1)
if __name__ == '__main__':
cra1_1()
import jsonpath
from fake_useragent import UserAgent
import requests
def cra1_1():
url = 'http://xxx:8031/front/website/findAllTypes'
headers = {'User-Agent': UserAgent().chrome}
resp = requests.get(url, headers=headers)
result = resp.json()
code = jsonpath.jsonpath(result, '$.code')
print(code)
if __name__ == '__main__':
cra1_1()