五、JSONPath使用(Python)

1. 安装方法

pip install jsonpath

2. jsonpath与Xpath

下面表格是jsonpath语法与Xpath的完整概述和比较。

Xpath

jsonpath

概述

/

$

根节点

.

@

当前节点

/

.or[]

取子节点

*

*

匹配所有节点

[]

[]

迭代器标识(如数组下标,根据内容选值)

//

不管在任何位置,选取符合条件的节点

n/a

[,]

支持迭代器中多选

n/a

?()

支持过滤操作

n/a

()

支持表达式计算

下面我们就通过几个示例来学习jsonxpath的使用方法。

我们先来看下面这段json数据:

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

3. 获取符合条件的节点

假如我需要获取到作者的名称该怎么样写呢?

如果通过Python的字典方法来获取是非常麻烦的,所以在这里我们可以选择使用jsonpath.。

具体代码示例如下所示:

import jsonpath

author = jsonpath.jsonpath(data_json, '$.store.book[*].author')
print(author)

运行上面的代码你会发现,成功地获取到了所有的作者名称,并保存在列表中。

或者还可以这样写:

import jsonpath

author = jsonpath.jsonpath(data_json, '$..author')
print(author)

4. 使用指定索引

还是使用上面的json数据,假如我现在需要获取第三本书的价格。

third_book_price = jsonpath.jsonpath(data_json, '$.store.book[2].price')
print(third_book_price)

运行上面的代码,你会发现成功地获取到了第三本书的价格。

5. 使用过滤器

isbn_book = jsonpath.jsonpath(data_json, '$..book[?(@.isbn)]')
print(isbn_book)
print(type(isbn_book))

通过运行上面的代码,你会发现,成功地将含有isbn编号的书籍过滤出来了。

同样的道理,根据上面的例子,我们也可以将价格小于10元的书过滤出来。

book = jsonpath.jsonpath(data_json, '$..book[?(@.price<10)]')
print(book)
print(type(book))

通过运行上面的代码,你会发现这里已经成功地将价格小于10元的书提取出来了。

jsonpath其实是非常适合用来获取json格式的数据的一款工具,最重要的是这款工具轻量简单容使用。关于jsonpath的介绍到这里就结束了,开启您的实战演练吧!

相关文章

干货 | 如何利用Python处理JSON格式的数据,建议收藏

作者: 俊欣来源: 关于数据分析与可视化JSON数据格式在我们的日常工作中经常会接触到,无论是做爬虫开发还是一般的数据分析处理,今天,小编就来分享一下当数据接口是JSON格式时,如何进行数据处理进行详...

详细介绍一下Python如何对JSON格式数据进行处理?

在Python中对于JSON数据的处理是在日常开发中的常见需求之一。通常情况下,对JSON数据的处理主要涉及到如下的的几个步骤对于JSON数据的解析操作对于JSON数据的处理操作对于JSON数据的格式...

python之json基本操作

1. 概述JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它具有简洁、清晰的层次结构,易于阅读和编写,还可以有效的提升网络传输效率。Python 标准库的...

Python之Json模块详解

Step1:Json是什么JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。具有数据格式简单,读写方便易懂等很多优点。许多主流的编程语言都...

Python JSON 详解教程

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式(lightweight data interchange format)常用于 Web 应用、配置文件(co...

一篇长文带你在Python里玩转Json数据

Json简介Json(JavaScript Object Notation)很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的。这因为...