简介
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()