Python_jsonPath模块的使用

Posted 不自在

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python_jsonPath模块的使用相关的知识,希望对你有一定的参考价值。

jsonpath简介

如果有一个多层嵌套的复杂字典,想要根据key批量提取value,还是比较繁琐的。jsonPath模块就能解决这个痛点,接下来我们来学习一下jsonpath模块。

因为jsonpath是第三方模块,想要使用需要安装

pip install jsonpath

jsonpath使用方法

import jsonpath
res=jsonpath.jsonpath(dict_data,\'jsonpath语法规则字符串\')

根据给定jsonpath语法规则,在dict_data中若能找到对应的数据,则以list类型返回数据,若找不到则返回false。

jsonpath语法规则

jsonpath使用示例

book_dict = {
        "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
        }
}

from jsonpath import jsonpath

# 获取price的所有值
print(jsonpath(book_dict, \'$..price\'))

# 获取book下面所有元素
print(jsonpath(book_dict, "$.book.*"))

# 获取book下面所有price的值
print(jsonpath(book_dict, "$.book[*].price"))
print(jsonpath(book_dict, "$.book..price"))

# 获取第1本书所有信息
print(jsonpath(book_dict, "$.book[0]"))

# 获取第2~3本书所有信息
print(jsonpath(book_dict, "$.book[1:3]"))

# 获取最后一本书
print(jsonpath(book_dict, "$.book[(@.length-1)]"))

# 获取包含了isbn的所有书
print(jsonpath(book_dict, "$.book[?(@.isbn)]"))

# 获取书的价格小于10的书
print(jsonpath(book_dict, "$.book[?(@.price<10)]"))

执行结果

 

以上是关于Python_jsonPath模块的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

如何有条件地将 C 代码片段编译到我的 Perl 模块?

CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段

如何将字符串数据从活动发送到片段?

nodejs常用代码片段

常用python日期日志获取内容循环的代码片段