python中jsonpath模块的运用

1. jsonpath介绍
用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。

使用方法如:

import jsonpath
res=jsonpath.jsonpath(dic_name,‘$..key_name‘)
#嵌套n层也能取到所有key_name信息,其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回false

2. JsonPath 对于 JSON 来说,相当于 XPath 对于 XML。

安装方法:pip install jsonpath
     
        官方文档:http://goessner.net/articles/JsonPath

3. JsonPath与XPath语法对比:

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

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

4. 使用实例

d={
        "error_code": 0,
        "stu_info": [
                {
                        "id": 2059,
                        "name": "小白",
                        "sex": "男",
                        "age": 28,
                        "addr": "河南省济源市北海大道32号",
                        "grade": "天蝎座",
                        "phone": "18378309272",
                        "gold": 10896,
                        "info":{
                            "card":434345432,
                            "bank_name":‘中国银行‘
                        }

                },
                {
                        "id": 2067,
                        "name": "小黑",
                        "sex": "男",
                        "age": 28,
                        "addr": "河南省济源市北海大道32号",
                        "grade": "天蝎座",
                        "phone": "12345678915",
                        "gold": 100
                }
        ]
}

res= d["stu_info"][1][‘name‘] #取某个学生姓名的原始方法:通过查找字典中的key以及list方法中的下标索引
print(res) #输出结果是:小黑

import jsonpath
res1=jsonpath.jsonpath(d,‘$..name‘) #嵌套n层也能取到所有学生姓名信息,$表示最外层的{},..表示模糊匹配
print(res1) #输出结果是list:[‘小白‘, ‘小黑‘]

res2= jsonpath.jsonpath(d,‘$..bank_name‘)
print(res2) #输出结果是list:[‘中国银行‘]

res3=jsonpath.jsonpath(d,‘$..name123‘) #当传入不存在的key(name)时,返回False
print(res3) #输出结果是:False

原文地址:https://www.cnblogs.com/denise1108/p/10265911.html

时间: 2024-10-15 03:35:18

python中jsonpath模块的运用的相关文章

python中jsonpath模块,解析多层嵌套的json数据

1. jsonpath介绍用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java. 使用方法如: import jsonpathres=jsonpath.jsonpath(dic_name,'$..key_name')#嵌套n层也能取到所有key_name信息,其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

Python中ConfigParser模块应用

Python中ConfigParser模块应用 Python的ConfigParser模块定义了3个对INI文件进行操作的类 RawConfigParser,ConfigParser和SafeConfigParser.其中RawCnfigParser是最基础的INI文件读取类,ConfigParser.SafeConfigParser支持对%(value)s变量的解析. 下面看看怎样通过ConfigParser类来解析一个ini文件. 配置文件settings.cfg [DEFAULT] myk

python中的模块安装

python中的模块研究: 需要用import导入的模块都是用python实现的. 内建的部分是用c.c++实现的. pypi:第三方的python包. 在windows上安装python: 1.安装python到C:\PythonXX,添加系统环境变量path:C:\PythonXX. 安装pypi库的方法三种方法: 1.在pypi上下载安装包离线安装 cd  $package-dir python   setup.py  install 在windos的cmd上也可以这样安装. 3.用eas

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

Python中optionParser模块的使用方法[转]

本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8

【转】关于python中re模块split方法的使用

注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于python中re模块split方法的使用 已有 3094 次阅读 2014-3-12 11:30 |系统分类:科研笔记 今天在写一段小代码的时候需要用到re.split()方法,在使用的过程中发现了一个以前不知道的新用法,发现这个用法还是挺实用的,就把它记录下来: >>> m = re.s

python中MySQLdb模块用法实例

篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMyS

Python中peewee模块

Python中peewee模块,有需要的朋友可以参考下. 前言关于ORM框架: 简介: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的"虚拟对象数据库". 对象关系映射(Object-Relational Mapping)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心