Python:JSONPath基本语法和使用示例

简介: Python:JSONPath基本语法和使用示例

基本语法

JSONPath语法元素和对应XPath元素的对比

XPath

JSONPath

Description

/

$

根元素

.

@

当前元素

/

. or []

子元素

..

n/a

父元素

//

..

递归下降,JSONPath是从E4X借鉴的。

*

*

通配符,表示所有的元素

@

n/a

属性访问字符

[]

[]

子元素操作符

[,]

连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。

 

n/a

[start: end: step]

数组分割操作从ES4借鉴。

[]

?()

应用过滤表示式

n/a

()

脚本表达式,使用在脚本引擎下面。

()

n/a

Xpath分组


示例对比

XPath

JSONPath

结果

/store/book/author

$.store.book[*].author

书点所有书的作者

//author

$..author

所有的作者

/store/*

$.store.*

store的所有元素。所有的bookst和bicycle

/store//price

$.store..price

store里面所有东西的price

//book[3]

$..book[2]

第三个书

//book[last()]

$..book[(@.length-1)]

最后一本书

//book[position() < 3]

$..book[0,1] $..book[:2]

前面的两本书

//book[isbn]

$..book[?(@.isbn)]

过滤出所有的包含isbn的书。

//book[price<10]

$..book[?(@.price<10)]

过滤出价格低于10的书。

//*

$..*

所有元素。

xpath索引下标是从1开始的

jsonpath索引下标是从0开始

Python中使用

安装依赖

pip install jsonpath

代码示例

# -*- coding: utf-8 -*-
import jsonpath
data = {
    "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
             }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    }
}
ret = jsonpath.jsonpath(data, '$.store.book[*].author')
print(ret)
# ['Nigel Rees', 'Evelyn Waugh']
ret = jsonpath.jsonpath(data, '$..author')
print(ret)
# ['Nigel Rees', 'Evelyn Waugh']
ret = jsonpath.jsonpath(data, '$.store..price')
print(ret)
# [8.95, 12.99, 19.95]
ret = jsonpath.jsonpath(data, '$..book[1].title')
print(ret)
# ['Sword of Honour']
ret = jsonpath.jsonpath(data, '$..book[?(@.price<10)].title')
print(ret)
# ['Sayings of the Century']

参考

  1. https://goessner.net/articles/JsonPath/
  2. JSONPath-简单入门
相关文章
|
2月前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
76 4
|
27天前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
36 7
|
2月前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
【10月更文挑战第7天】金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
48 4
|
10天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
50 8
|
17天前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
41 11
|
20天前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
35 6
|
25天前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
55 5
|
28天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
32 1
|
1月前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
1月前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
24 2
下一篇
DataWorks