简介:JMESPath是JSON的一种查询语言。对于经常需要解析json的数据的小伙伴都知道,在多层嵌套的情况下,我们需要写各种if-else来判断,非常的麻烦。JMESPath提供了便利的方式可以支持通用性高的查询方法。
历史攻略:
Python内置库:编码和解码 JSON 对象 - json
安装:
pip install jmespath
案例解析:
# -*- coding: utf-8 -*-
# time: 2024/3/3 12:10
# file: main.py
# 公众号: 玩转测试开发
import jmespath
# case-1
data1 = {"foo": {"bar": "baz"}}
path1 = jmespath.search('foo.bar', data1)
print(path1) # baz
# case-2
data2 = {"foo": {"bar": ["one", "two"]}}
path21 = jmespath.search('foo.bar[0]', data2)
path22 = jmespath.search('foo.bar[-1]', data2)
print(path21) # one
print(path22) # two
# case-3
data3 = {"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}
path3 = jmespath.search('foo.*.name', data3)
print(path3) # ['one', 'two']
# Case 3: If using the old query function method.
result = [v2["name"] for k, v in data3.items() for k2, v2 in v.items()]
print(result)
对比案例中case-3,可知:当涉及多层嵌套时,jmespath可以更简洁高效的提取数据,方便我们编写更少的判断,所以当需要处理复杂的JSON或字典数据时,推荐使用该模块。