美文网首页PythonPython
Python3下利用JsonPath解析数据

Python3下利用JsonPath解析数据

作者: wintests | 来源:发表于2021-06-26 20:14 被阅读0次

前言

常见Web接口返回数据的时候,大部分是以 JSON 的形式返回,如果返回数据量不大的话,我们可以直接通过 字典取值正则取值 的方式来直接获取。

但如果接口返回数据量比较大,或者嵌套的层级非常深,这种情况下使用 字典取值 就会变得有点困难;而 正则取值 虽然是万能的方法,但其只针对字符串才能使用。

那么在 Python 中,对于以上情况,有没有更好更方便的方法呢?今天我们就来学习一款JSON解析神器:JsonPath,它是专门用来解析提取JSON数据用的。

本人环境:Python 3.7.0、jsonpath 0.82

JsonPath安装

在 Python 中,为了使用JsonPath来解析数据,我们需要安装第三方库,命令如下:

pip3 install jsonpath

JsonPath语法示例

在 JsonPath 中使用 $ 来表示根节点,或者说使用 $ 来表示整个JSON数据。假如存在以下 data 数据:

{
    "store": {
        "book": [
            {
                "category": "新闻学",
                "author": "张三",
                "title": "图书标题1",
                "price": 8.95
            },
            {
                "category": "金融学",
                "author": "李四",
                "title": "图书标题2",
                "price": 12.00
            },
            {
                "category": "计算机",
                "author": "王五",
                "title": "图书标题3",
                "isbn": "0-553-21311-3",
                "price": 9.99
            },
            {
                "category": "医学",
                "author": "赵六",
                "title": "图书标题4",
                "price": 22.99
            }
        ],
        "phone": {
            "color": "red",
            "price": 1999.00,
            "author": "孙七"
        },
        "author": "周八",
        "price": 1.00
    },
    "author": "吴九"
}

以下是JsonPath的简单语法示例:

JsonPath 返回结果
$.store.book[*].author 所有book的author
$.author 仅子节点下的author
$..author 所有节点下的author
$.store.* store的所有元素,包括 book 和 phone
$.store..price store的所有price
$..book[2] book的第3个元素
$..book[(@.length - 2)] book的倒数第2个元素
$..book[:2] book的前面2个元素
$..book[-2:] book的最后2个元素
$..book[0,3] book的第1个元素、第4个元素
$..book[?(@.isbn)] book中所有带有 isbn 的元素
$.store.book[?(@.price < 10)] book中所有price小于10的元素
$..* 所有元素

注意:使用 JsonPath 时,索引是从 0 开始计算。

jsonpath使用

我们在Python中结合第三方库 jsonpath 来处理JSON数据时,使用方式为:jsonpath.jsonpath(data, jsonpath表达式),如果成功从 data 中提取到数据,那么会返回一个list列表,否则直接返回False。

import jsonpath


data = {
    "store": {
        "book": [
            {
                "category": "新闻学",
                "author": "张三",
                "title": "图书标题1",
                "price": 8.95
            },
            {
                "category": "金融学",
                "author": "李四",
                "title": "图书标题2",
                "price": 12.00
            },
            {
                "category": "计算机",
                "author": "王五",
                "title": "图书标题3",
                "isbn": "0-553-21311-3",
                "price": 9.99
            },
            {
                "category": "医学",
                "author": "赵六",
                "title": "图书标题4",
                "price": 22.99
            }
        ],
        "phone": {
            "color": "red",
            "price": 1999.00,
            "author": "孙七"
        },
        "author": "周八",
        "price": 1.00
    },
    "expensive": 10,
    "author": "吴九"
}


res1 = jsonpath.jsonpath(data, "$.store.book[*].author")
print("所有book的author:{}".format(res1))

res2 = jsonpath.jsonpath(data, "$.store..price")
print("store的所有price:{}".format(res2))

res3 = jsonpath.jsonpath(data, "$..book[0,3]")
print("book的第1个元素、第4个元素:{}".format(res3))

res4 = jsonpath.jsonpath(data, "$.store.book[?(@.price < 10)]")
print("book中所有price小于10的元素:{}".format(res4))

相关文章

  • Python3下利用JsonPath解析数据

    前言 常见Web接口返回数据的时候,大部分是以 JSON 的形式返回,如果返回数据量不大的话,我们可以直接通过 字...

  • 07-数据提取-jsonpath

    jsonpath用来解析多层嵌套的json数据jsonpath官方文档 安装 语法 使用 字典的根节点为最外部大括...

  • JSONPath解析json

    JSONPath 用来解析多层嵌套的json数据,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定...

  • jsonpath模块01

    JSONPath 表达式 JSONPath 是参照,xpath表达式来解析xml文档的方式,json数据结构通常是...

  • JsonPath解析Json数据

    JsonPath to JSON is what XPATH is to XML, a simple way to...

  • jsonpath解析

    2019-06-03 jsonpath用来解析json数据使用的 python处理json格式用到的函数 impo...

  • JSONPath入门及测试

    JSONPath入门 JSONPath - 是xpath在json的应用,是参照xpath表达式来解析XML文档的...

  • 数据解析-XML解析

    今天来介绍一下XML数据解析的基础内容通俗的来讲 所谓XML数据解析就是将带有标签样式的数据 利用XML解析方法将...

  • python中jsonpath模块

    简介jsonpath表达式与xPath表达式类似,jsonpath是一种信息抽取类库,提供的json解析非常强大,...

  • Python之JsonPath解析json数据

    一、JsonPath介绍: 首先,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供...

网友评论

    本文标题:Python3下利用JsonPath解析数据

    本文链接:https://www.haomeiwen.com/subject/qsczmctx.html