Python利用jmespath模块进行json数据处理

Miles
Miles
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍Python中jmespath第三方模块的安装与使用。通过导入模块并调用search函数,演示如何对单层、多层嵌套JSON及数组数据进行查询。涵盖键值提取、数组下标访问、切片操作及通配符[*]的高级用法,帮助开发者高效处理复杂JSON数据结构。

jmespath模块安装与导入

jmespath是一个Python第三方扩展模块,使用前需单独安装。该模块在Python原生json处理功能的基础上进行了增强。

它显著提升了数据处理的便捷性,具体效果可通过后续示例直观感受。

下面直接开始介绍具体用法。

作为第三方库,首先需要通过pip命令完成安装。

pip install jmespath

安装完成后,在代码中导入该模块即可使用。

import jmespath as jp

search函数基础用法

jmespath核心函数为search,无论JSON结构多么复杂,该函数均能定位目标数据。这一设计极大简化了开发流程。

首先准备一个最简单的JSON数据,其层级仅为一层。

json_data1 = {"name": "Python 集中营", "age": "10年"}

res = jp.search("name", json_data1)

print(res)

# Python 集中营

多层级与数组数据查询

对于多级嵌套的JSON数据,可以通过key1.key2.key3的方式逐层获取对应的value值。

json_data2 = {"names": {"name": "Python 集中营", "age": "5年"}}

res = jp.search("names.name", json_data2)

print(res)

# Python 集中营

针对JSON中的数组形式,支持通过数组下标方式获取特定value值。

json_data3 = ['Python 集中营', 'Sir.wang']

res = jp.search("[0]", json_data3)

print(res)

# Python 集中营

当JSON数据同时包含数组和字典结构时,可以组合使用多种查找方式。例如处理如下JSON数据:

json_data4 = {
    "key1": {"key1_1": "value1_1"},
    "key2": {"key2_1": ["a", "b", "c"]}
}

复杂JSON处理与切片操作

面对稍复杂的JSON结构,建议先定义好表达式字符串,最后再调用search函数执行查找。例如需要在JSON中找到指定的数组:

# ["a", "b", "c"]

exp = "key2.key2_1[0]"

res = jp.search(exp, json_data4)

print("数组中的数值:", res)

# 数组中的数值:a

此外,jmespath也支持通过切片方式获取所需JSON数据。

json_data5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

exp = "[0:7]"

res = jp.search(exp, json_data5)

print("切片数据结果", res)

# 切片数据结果 [0, 1, 2, 3, 4, 5, 6]

通配符与高级匹配技巧

另一种查找方式是利用*符号作为通配符,主要适用于外层数据为数组的JSON结构。例如存在如下数据:

json_data6 = {
    "data": [
        {"name": "Python 集中营", "age": "5年"},
        {"name": "Sir.wang", "age": "28"},
        {"dr": "nrg"}
    ]
}

针对此类数据结构,表达式可编写为:先定位data键,使用data[*]获取data下的所有数据,再通过下一层级的键进行匹配。

exp = "data[*].name"

res = jp.search(exp,json_data6)

print(res)

# ['Python 集中营', 'Sir.wang']

若需匹配到的键为dr,则将exp表达式修改为如下形式即可实现查找:

exp = "data[*].dr"

# 查找的结果则是下面这样的...

# ['nrg']

关于Python利用jmespath模块处理JSON数据的介绍到此结束。如需了解更多Python JSON数据处理相关内容,可搜索本站历史文章或继续浏览后续文章,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表