python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)
前言
之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样:
value = data['store']['book'][0]['title']
有的甚至会比这个更长,看起来特别不舒服,而且假如原始的数据发生了一个变化,你需要针对你的代码再做一个工作量不小的适配工作,非常不方便,所以我想能否可以快速的对一串json数据取到想要的key对应的value值呢?
经过一段尝试,终于成功的解决了这个问题,其实核心思想就是将取值过程流程化
,代码其实很简单,我也已经将代码传到了github上了,地址在这里。
安装
为了更加能够让大家快速的使用代码的相关功能,我将代码上传到python库。
大家可以使用pip
进行安装:
pip install jsonsearch
或者使用
pip install --index-url https://pypi.org/simple/jsonsearch
解决方案
测试数据
{"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
}
功能介绍
当前程序主要有以下几个功能:
- 查找key对应的所有值,比如查找上述数据中
title
对应的所有值 - 查找key对应值的所有路径,比如取到
title
对应的值经过的所有路径 - 查找key对应的第一个值,比如查找上述数据中
title
对应的第一个值 - 查找key对应值的第一条路径,比如取到
title
对应的值经过的第一条路径
正式使用
准备工作
- 导入jsonsearch包
from jsonsearch import JsonSearch
- 数据初始化
如果你导入的数据本来就是json对象,那么采用如下的方式导入:
jsondata = JsonSearch(object=test_data, mode='j')
如果你导入的数据是字符类型对象,那么采用如下的方式导入:
jsondata = JsonSearch(object=test_data, mode='s')
其中的区别在于mode
选项的值填写的不一样,其中j
表示json对象,mode
表示字符对象。
功能使用
1. 查找key对应的所有值
如果我们希望从案例数据中查找title
对应的所有值,只需使用下面程序即可
jsondata.search_all_value(key='title')
得到的结果如下:
['Sayings of the Century', 'Sword of Honour', 'Moby Dick', 'The Lord of the Rings']
2. 查找key对应值的所有路径
如果我们希望从案例数据中查找title
对应值的所有路径,只需使用下面程序即可
jsondata.search_all_path(key='title')
得到的结果如下:
[['store', 'book', 0, 'title'], ['store', 'book', 1, 'title'], ['store', 'book', 2, 'title'], ['store', 'book', 3, 'title']]
如果我们对路径进行遍历其实也能取到我们的值。
3. 查找key对应的第一个值
如果我们希望从案例数据中查找title
对应的第一个值,只需使用下面程序即可
jsondata.search_first_value(key='title')
得到的结果如下:
'Sayings of the Century'
4. 查找key对应值的第一条路径
如果我们希望从案例数据中查找title
对应值的第一条路径,只需使用下面程序即可
jsondata.search_first_path(key='title')
得到的结果如下:
['store', 'book', 0, 'title']
结语
以上就是当前jsonsearch
的主要功能,后续的话会继续为其完善一些相应的功能,如果大家有需求的话,也欢迎在github上提issue,欢迎大家下载使用jsonsearch
。
如果对你有帮助的话,欢迎在github上点击一个star,非常感谢。
python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)相关推荐
- b是python文件二进制打开_如何在Python中打开和显示原始二进制数据?
'rb'模式允许您从Python中的文件读取原始二进制数据:with open(filename, 'rb') as file: raw_binary_data = file.read() type( ...
- Android中怎获取json,Android应用中如何解析获取的json数据
Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...
- Python中通过索引名称提取数据loc()函数Python中通过行和列下标提取数据iloc()函数
[小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中通过索引名称提取数据 loc()函数 Python中通过 ...
- 在python中创建Excel文件并写入数据
来源:<在python中创建Excel文件并写入数据> python中的包xlwt和xlsxwriter都是比较方便创建excel文件并写入数据的. xlwt中: 通过xlwt.Workb ...
- php json语法错误,在PHP json_decode()中检测到错误的json数据?
在PHP json_decode()中检测到错误的json数据? 通过json_decode()解析时,我正在尝试处理错误的json数据. 我正在使用以下脚本: if(!json_decode($_P ...
- python保存列表到json_将json数据保存到python列表中时出现问题
我试图同时从json数据中获取两个属性,并将它们作为项目添加到我的python列表中.但是,当尝试添加这两个时:['emailTypeDesc']['createdDate']它将引发错误.有人可以帮 ...
- 飘逸的python - 命令行漂亮的显示json数据
之前做的一个脚本把信息用json格式存到文本中.这样的好处是简便,易编辑,并且拥有强大的表达能力. 不过从文本cat出来的是一堆很难看的字符串,没换行和缩进.这时候就在想,如果有个类似于IDE的格式化 ...
- python读取多行json_如何在Python中读取包含多个JSON对象的JSON文件?
所以这是在python中读取JSON文件的标准方法 import json from pprint import pprint with open('ig001.json') as data_file ...
- Python爬虫项目:爬取JSON数据存储Excel表格与存储图片
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战.搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Googl ...
最新文章
- 搭建Cocos Code IDE开发环境
- 网络最大流(SAP)模板
- 操作系统习题7—文件系统
- 云路由 vyatta 体验(一)基本设置
- 网页中弹出模式对话框
- stmmac 中断处理
- 爬动的蠕虫(C++)
- 归档-软考网规-存储部分-san-nas-das
- mysql查询某个字段数量最多_查询一个表某个字段中出现次数最多的那个数据的前30名...
- MySQL5.5.27使用Restore From SQL Dump功能导入数据库表中出现Row size too large
- 三种菜单控件的兼容性问题处理集锦
- Ubuntu18.04安装OpenCV4.3.0和环境配置(支持编译CUDA并安装配置python-opencv)
- JZ6-旋转数组的最小数字
- R语言 | 构建信用评分卡模型
- 树莓派端口i2s_树莓派制造低成本交互式显微镜
- VBS教程(入门级)
- 插件!最好用的翻译插件!!
- 吉林农业大学计算机类考研,吉林农业大学考研难吗?一般要什么水平才可以进入?...
- OpenCore 黑苹果安装教程
- 在内核中创建文件 filp_open/sys_open