Python+Jsonpath Json解析工具详解

Json基本概念以及Dumps与Loads详见上篇文章,本篇文章主要记录下Jsonpath的详细使用。

Jsonpath是一种类似于 XPath 的查询语言,用于从 JSON 数据中提取数据。它支持多种操作符和内置函数,可以进行高级查询和过滤。
Jsonpath 是 Python 中的一个第三方库,用于从 JSON 数据中提取数据。它支持多种操作符和内置函数,可以进行高级查询和过滤。
以下是 JSONPath 的详细介绍:

安装和导入

使用pip命令安装jsonpath

# 使用pip命令安装jsonpath
pip install jsonpath

# 安装完成后,可以使用一下命令来导入jsonpath
from jsonpath import jsonpath

基本语法

在 JSONPath 中,使用 $ 符号来表示根节点。以下是一些基本的查询语法:

  • $: 表示根节点。
  • @: 表示当前节点。
  • . : 表示子节点。
  • : 表示子孙节点。
  • []: 表示索引或过滤条件。
  • *****: 表示通配符,匹配任何节点。
  • [,]: 表示分隔符,用于在同一个查询中指定多个路径。

以下是一些示例:

import json
from jsonpath import jsonpath

data = {
    "bookstore": {
        "book": [
            {
                "title": "Harry Potter",
                "price": 29.99
            },
            {
                "title": "The Alchemist",
                "price": 12.99
            }
        ]
    }
}

# 选择根节点
jsonpath(data, "$")

# 选择书店名称
jsonpath(data, "$.bookstore")

# 选择第一本书的标题
jsonpath(data, "$.bookstore.book[0].title")

# 选择所有书的标题
jsonpath(data, "$.bookstore.book[*].title")
jsonpath(data, "$..title")

操作符

JSONPath 中支持以下操作符:

  • ==: 相等。
  • !=: 不相等。
  • <: 小于。
  • <=: 小于等于。
  • >: 大于。
  • >=: 大于等于。
  • (): 分组操作符。
  • +: 加法。
  • -: 减法。
  • *****: 乘法。
  • /: 除法。
  • %: 取模。
  • !: 取反。
  • &&: 逻辑与。
  • ||: 逻辑或。

以下是一些示例:

import json
from jsonpath import jsonpath

data = {
    "bookstore": {
        "book": [
            {
                "title": "Harry Potter",
                "price": 29.99
            },
            {
                "title": "The Alchemist",
                "price": 12.99
            }
        ]
    }
}

# 选择价格小于 20 的书的标题
jsonpath(data, "$.bookstore.book[?(@.price < 20)].title")

过滤器

JSONPath 中支持使用 [] 进行过滤操作。以下是一些示例:

import json
from jsonpath import jsonpath

data = {
    "bookstore": {
        "book": [
            {
                "title": "Harry Potter",
                "price": 29.99
            },
            {
                "title": "The Alchemist",
                "price": 12.99
            }
        ]
    }
}

# 选择第一本书和最后一本书的标题
jsonpath(data, "$.bookstore.book[0, -1].title")

# 选择价格最低的书的标题
jsonpath(data, "$.bookstore.book[(@.price == $.bookstore.book[*].price.min())].title")

内置函数

JSONPath 中支持以下内置函数:

  • length(): 返回数组或字符串的长度。
  • min(): 返回数组中的最小值。
  • max(): 返回数组中的最大值。
  • sum(): 返回数组中的所有元素的和。
  • avg(): 返回数组中所有元素的平均值。
  • reverse(): 反转数组的顺序。

以下是一些示例:

import json

data = {
    "bookstore": {
        "book": [
            {
                "title": "Harry Potter",
                "price": 29.99
            },
            {
                "title": "The Alchemist",
                "price": 12.99
            }
        ]
    }
}

# 选择书店中所有书的数量
jsonpath.jsonpath(data, "$.bookstore.book.len()")

# 选择书店中价格最低的书的标题
jsonpath.jsonpath(data, "$.bookstore.book[?(@.price == $.bookstore.book[*].price.min())].title")

以上是Python+ JSONPath 的一些基本语法、操作符、过滤器和内置函数的介绍。使用这些功能,你可以轻松地从 JSON 数据中提取所需的信息。

你可能感兴趣的:(python学习笔记,python,json,开发语言)