1.设置默认值
import jmespath
data = {
"bar": "some value"
}
# 使用JMESPath的default函数设置默认值
expression = "foo || `default value`"
result = jmespath.search(expression, data)
print(result) # 输出将会是 "default value"
2.条件过滤
与关系
与(and):使用&&连接多个条件,例如[?(type == `FBA Inventory Fee` && description == `FBA Inventory Storage Fee`)].total
dispatchBillNo = jmespath.search("data[?(businessType==`8`&&'dispatchBillStatus'==`1`)].dispatchBillNo", r)[0]
或(or):使用||连接多个条件,例如[?type == `FBA Inventory Fee` || description == `FBA Inventory Storage Fee`]
非(not):使用!对条件取反,例如[?!(type == `FBA Inventory Fee`)]
3.字段拼接
在JMESPath中,你可以使用join函数来将多个字符串拼接成一个字符串。这个函数接受一个字符串数组作为参数,并使用指定的分隔符将这些字符串连接起来。
例如,假设你有一个JSON文档如下:
{
"servers": [
{"id": "server1", "instance_type": "t2.micro"},
{"id": "server2", "instance_type": "m4.large"}
]
}
你可以使用以下JMESPath表达式来提取所有服务器的ID并将它们用逗号连接成一个字符串:
join(', ', [server.id for server in servers])
这将输出:
server1, server2
在Python中使用JMESPath的示例代码如下:
import jmespath
json_data = {
"servers": [
{"id": "server1", "instance_type": "t2.micro"},
{"id": "server2", "instance_type": "m4.large"}
]
}
expression = "join(', ', [server.id for server in servers])"
result = jmespath.search(expression, json_data)
print(result) # 输出: server1, server2
实例:
res = {"cityName":"北京市","detailAddress":"大族广场T3"}
info = jmespath.search('data.{"detailAddress":join(``,[cityName,detailAddress])}',res)
输出:{'detailAddress': '北京市大族广场T3'}