一、jsonpath是什么?
用来解析json数据的所使用的。
二、jsonpath的作用
通过通用的表达式可以获取json中指定的值。
三、jsonpath的使用
1、安装jsonpath
pip install jsonpath
2、具体的使用
$ —根节点(root)
. —子节点(一个点)
… —子孙节点(两个点) 递归搜索
(*):—通配符,表示所有的元素
[] —子节点
eg:
import jsonpath class_info = {"class_one": { "students": [ {"name": "张一", "sex": "男", "age": 18, "height": 170.5 }, {"name": "张二", "sex": "女", "age": 20, "height": 160.5 }, {"name": "张三", "sex": "男", "age": 18, "height": 170.5 }, {"name": "张四", "sex": "女", "age": 18, "height": 165.5 }, ], "teacher": { "name": "李小二", "sex": "男", "age": 30, "height": 185.5, "teacher": "递归搜索测试" } } } # 方式一 res = jsonpath.jsonpath(class_info,"$..class_one") # 方式二: res = jsonpath.jsonpath(class_info,"$[class_one]") print(res) 控制台打印结果: [{'students': [{'name': '张一', 'sex': '男', 'age': 18, 'height': 170.5}, {'name': '张二', 'sex': '女', 'age': 20, 'height': 160.5}, {'name': '张三', 'sex': '男', 'age': 18, 'height': 170.5}, {'name': '张四', 'sex': '女', 'age': 18, 'height': 165.5}], 'teacher': {'name': '李小二', 'sex': '男', 'age': 30, 'height': 185.5, 'teacher': '递归搜索测试'}}] # 如果获取所有的name res = jsonpath.jsonpath(class_info,"$..name") print(res) ['张一', '张二', '张三', '张四', '李小二'] ?(): 条件过滤 @ 代表当前元素 res = jsonpath.jsonpath(class_info, "$.class_pne.students.[?(@.age > 18)]") print(res) [{'name':'张二','sex':'女','age':20,'height':160.5}]