jsonpath的高级使用

安装库:

pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com   jsonpath

使用很简单2行:

from jsonpath import jsonpath
ret = jsonpath(dic, '语法规则字符串')

jsonpath语法规则如下:

语法描述
$根节点
@使用过滤谓词来处理当前节点
. or []取子节点
n/a取父节点,jsonpath未支持
就是不管位置,选择符合条件的条件
*匹配所有元素节点
[,]支持迭代器中做多选
?()支持过滤操作
()支持表达式计算

在这里插入图片描述

JsonPath语法结果
$.store.book[*].author获取store下book下的所有author值
$…author获取所有author 的值
$.store…price获取 store下以及所有子节点下的所有 price
$…book[2]获取 book数组的第3个值
$…book[0,1]获取 book数组的第一、第二的值
$…book[:2]获取 book数组从索引 0 (包括) 到 索引 2 (不包括) 的所有值
$…book[2:]获取 book数组从索引 2 (包括) 到 结尾 的所有值
$…book[?(@.isbn)]获取 所有节点以及子节点中 book 数组包含 isbn 的所有值
$.store.book[?(@.price < 10)]获取 store下 book 数组中 price < 10 的所有值
…book[?(@.price<=[‘expensive’])]获取 所有节点以及子节点下 book 数组中 price <= expensive 的所有值
$…book[?(@.author =~ /.*REES/i)]获取所有匹配正则的 book ( 不区分大小写 )
$…*逐层列出 json 中 的所有值,层级由外到内

例如提取duration数据
在这里插入图片描述

import json
from jsonpath import jsonpath

# 读入示例json数据
with open('json示例.json', encoding='utf-8') as j:
    demo_json = json.loads(j.read())

# 配合JSONPath表达式提取数据
jsonpath(demo_json, '$..steps[*].duration')

# 提取所有steps键的子节点对应instruction值
jsonpath(demo_json, '$..steps.*.instruction')

# 多选所有steps键的子节点对应的instruction与action值
jsonpath(demo_json, '$..steps.*[instruction,action]')

# 选择steps键的第0个子节点对应的instruction与action值
jsonpath(demo_json, '$..steps[0][instruction,action]')

# 选择steps键的第13(不包括3)个子节点对应的instruction与action值
jsonpath(demo_json, '$..steps[1:3][instruction,action]')

# 配合@,选择steps键的最后一个子节点对应的instruction与action值
jsonpath(demo_json, '$..steps[(@.length-1)][instruction,action]')

# 「条件筛选」
# 找到所有steps子节点中orientation为“西”的
jsonpath(demo_json, '$..steps[?(@.orientation == "西")]')

# 找到所有具有polyline键的节点对应的polyline与road键对应值
jsonpath(demo_json, '$..[?(@.polyline)][polyline,road]')

# 获取结果的JSONPath表达式
jsonpath(demo_json, '$..[?(@.polyline)][polyline,road]', result_type=None)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Python中的jsonpath是一个用于在JSON数据中查找和提取特定数据的库。它类似于XPath,但专门用于处理JSON。 要在Python使用jsonpath,首先需要安装jsonpath库。可以使用pip命令运行以下命令来安装它: ``` pip install jsonpath ``` 安装完成后,可以在Python脚本中导入jsonpath模块并使用它来查找和提取JSON数据。下面是一个简单的示例代码,演示如何使用jsonpathJSON数据中提取特定的值: ```python import json from jsonpath import jsonpath # JSON数据 data = ''' { "name": "John", "age": 30, "city": "New York", "children": [ { "name": "Alice", "age": 5 }, { "name": "Bob", "age": 8 } ] } ''' # 将JSON数据解析为Python对象 obj = json.loads(data) # 使用jsonpath提取数据 name = jsonpath(obj, '$.name') age = jsonpath(obj, '$.age') children_names = jsonpath(obj, '$.children[*].name') # 打印提取的数据 print(name) # 输出: ['John'] print(age) # 输出: [30] print(children_names) # 输出: ['Alice', 'Bob'] ``` 在上面的示例中,我们首先将JSON数据解析为Python对象(字典),然后使用jsonpath从中提取我们感兴趣的数据。jsonpath函数接受两个参数:要搜索的对象和jsonpath表达式。表达式`$.name`表示提取顶级键名为"name"的值,而表达式`$.children[*].name`表示提取所有子对象中的"name"键的值。 这只是jsonpath库的一个简单示例,它还提供了更多高级功能,如过滤器、通配符等。你可以参考官方文档或其他教程来了解更多关于jsonpath的用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值