微慑信息网

python下jsonpath

安装:python -m pip install jsonpath

Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。

Xpath JSONPath 描述
/ $ 跟节点
. @ 现行节点
/ . or [] 取子节点
.. n/a 就是不管位置,选择所有符合条件的条件
* * 匹配所有元素节点
[] [] 迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
&#124 [,] 支持迭代器中做多选
[] ?() 支持过滤操作
n/a () 支持表达式计算
() n/a 分组,JsonPath不支持

官网说明:

获取当前json数据中某节点数据:

jsonpath.jsonpath(html,’$..read_count’)

获取根节点下某节点数据:

jsonpath.jsonpath(html,’$.msg’)

获取子节点下第1、2个数据

jsonpath.jsonpath(html,’$.data.post_author.post_list[0:2]’)

按条件筛选节点下数据:

jsonpath.jsonpath(html,’$..data.post_author.post_list[?(@.read_count>10)]’)

 


 

import requests,jsonpath
#. or []    取子节点
#..         不管位置,选择所有符合条件的节点

shop=requests.get(url="").json()
#商店里所有书籍的作者
author_list=jsonpath.jsonpath(shop,'$.store.book[*].author')

#返回所有的作者
author_list2=jsonpath.jsonpath(shop,'$..author')

#商店里的所有东西
category_dx=jsonpath.jsonpath(shop,'$.store.*')

#商店里一切的价格
store_price_list=jsonpath.jsonpath(shop,'$.store..price')

#第三本书
book_3=jsonpath.jsonpath(shop,'$..book[2]')

#最后一本书
book_last=jsonpath.jsonpath(shop,'$..book[-1]')
num=len(jsonpath.jsonpath(shop,'$..book'))-1
book_last=jsonpath.jsonpath(shop,f'$..book[{num}]')  #取值

#前两本书
book_12=jsonpath.jsonpath(shop,f'$..book[0,1]')

#过滤所有便宜10以上的书籍
book_lg10=jsonpath.jsonpath(shop,'$..book[?(@.price<10)]')

#使用isbn number过滤所有书籍
book_lg10=jsonpath.jsonpath(shop,'$..book[?(@.isbn)]')

# !/usr/bin/env python
# -*- coding:utf-8 -*-

import json
import jsonpath
import requests

url='https://www.lagou.com/lbs/getAllCitySearchLabels.json'
resp=requests.get(url)
city_json=resp.text

# json字符串转换为python字典对象
city_dict=json.loads(city_json)

# 使用jsonpath匹配
# 获取根节点下的所有name节点的值
names=jsonpath.jsonpath(city_dict,expr='$..name')
print(names)
# 根节点下的message节点的值
message=jsonpath.jsonpath(city_dict,expr='$.message')
print(message)
# D节点下的前3个
D=jsonpath.jsonpath(city_dict,expr='$.content.data.allCitySearchLabels.D[0:3]')
print(D)
# D节点下的第2个和第4个
D=jsonpath.jsonpath(city_dict,expr='$.content.data.allCitySearchLabels.D[1,3]')
print(D)

其他还有jsonpath-rw、jsonpath-ng等

 

 

 

赞(0) 打赏
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » python下jsonpath

评论 抢沙发

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册