IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> python-jsonpath解析 -> 正文阅读

[开发测试]python-jsonpath解析

jsonpath是一个极其强大的解析json文档的工具,jsonpath强大的语法可以帮助你定位json文档中任一你想要的数据。jsonpath提供了多种语言的实现,在Java, JavaScript, PHP,Python等语言中都能完美解析,不用担心切换语言之后就需要改代码的情况。下面将简要介绍一下jsonpath语法,以及在python中的使用,以下面一组数据为例:

obj = {
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

jsonpath语法

常规操作符

操作符描述
$查询根元素
@过滤正在处理的当前节点
*通配符。可在任何需要名称或数字的地方使用
深层扫描,在任何需要名称的地方使用
.<name>获取子节点
[’<name>’ (, ‘<name>’)]获取一个或多个子节点
[<number> (, <number>)]获取一个或多个数组下标索引
[start:end]切片数组运算符
[?(<expression>)]过滤表达式。表达式必须计算为布尔值

函数

函数描述
min()获取数字数组的最小值
max()获取数字数组的最大值
avg()获取数字数组的平均值
stddev()获取数字数组的标准差值
length()获取数组的长度
sum()获取数字数组的和
keys()获取字典的键

过滤操作符

操作符描述
==左边等于右边,注意: 1不等于’1’
!=左边不等于右边
<左边小于右边
<=左边小于等于右边
>左边大于右边
>=左边大于等于右边
=~左边匹配正则表达式
in左边存在于右边
nin左边不存在于右边
subsetof左边是右边的子集
anyof左边与右边有交集
noneof左边与右边没有交集
size左边(数组或字符串)的大小应与右边匹配
empty左(数组或字符串)应该是空的

pyjsonpath

安装

pip install pyjsonpath

使用

book数组的前两个数据

>>> from pyjsonpath import JsonPath
>>> expr = "$.store.book[:2]"
>>> JsonPath(obj, expr).load()
[
    {
        'category':'reference',
        'author':'Nigel Rees',
        'title':'Sayings of the Century',
        'price':8.95
    },
    {
        'category':'fiction',
        'author':'Evelyn Waugh',
        'title':'Sword of Honour',
        'price':12.99
    }
]

获取book数据中price小于10的所有数据:

>>> from pyjsonpath import JsonPath
>>> expr = "$.store.book[?(@.price < 10)]"
>>> JsonPath(obj, expr).load()
[
    {
        'category':'reference',
        'author':'Nigel Rees',
        'title':'Sayings of the Century',
        'price':8.95
    },
    {
        'category':'fiction',
        'author':'Herman Melville',
        'title':'Moby Dick',
        'isbn':'0-553-21311-3',
        'price':8.99
    }
]

更多jsonpath语法请看jsonpath文档

pyjsonpath源码: https://github.com/hitplum/pyjsonpath

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:47:11  更:2021-12-24 18:49:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:37:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码