2025-04-28 17:48:46 by wst
python小技巧怎么在json中查找自己想要的数据呢,正好有个包可以实现,下面我们具体说明jsonpath的用法。
安装方法:pip install jsonpath
JSONPath 是一种用于提取 JSON 数据中特定字段的查询语言,其基本语法与 XPath 类似。以下是 JSONPath 的一些基本语法示例:
1.获取根节点
$
表示 JSON 数据的根节点。
{
"store": {
"book": [
{ "category": "reference", "price": 19.95 },
{ "category": "fiction", "price": 5.99 }
]
}
}
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$.store')
print(result)
输出:
[{'book': [{'category': 'reference', 'price': 19.95}, {'category': 'fiction', 'price': 5.99}]}]
使用 .
或 []
操作符来获取对象的字段值。
示例:
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$.store.book')
print(result)
输出:
[{'category': 'reference', 'price': 19.95}, {'category': 'fiction', 'price': 5.99}]
使用 [index]
来获取数组中的元素,索引从 0 开始。也可以使用通配符 [*]
来获取数组中的所有元素。
示例:
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$.store.book[0]')
print(result)
输出:
[{'category': 'reference', 'price': 19.95}]
获取所有元素:
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$.store.book[*]')
print(result)
输出:
[{'category': 'reference', 'price': 19.95}, {'category': 'fiction', 'price': 5.99}]
使用 ..
进行递归查找,查找所有匹配的字段,无论其在 JSON 数据中的位置如何。
示例:
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$..category')
print(result)
输出:
['reference', 'fiction']
使用 [?(@.field == value)]
来对数组元素进行过滤,其中 @
表示当前元素。
示例:
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$.store.book[?(@.category == "reference")]')
print(result)
输出:
[{'category': 'reference', 'price': 19.95}]
可以组合多个条件来获取更精确的结果。
示例:
import json
import jsonpath
data = json.loads(json_str)
result = jsonpath.jsonpath(data, '$.store.book[?(@.price < 10 && @.category == "fiction")]')
print(result)
输出:
[{'category': 'fiction', 'price': 5.99}]