jsonpath中多条件提取和过滤提取

在JsonPath中创建表达式之前,您必须了解两个重要的符号。

?:问号,标记表达式的开头。使用的语法[?(表达)]
[? (Expression)]
@: 在符号处表示正在处理的当前节点。语法使用$.books[?(@.price > 100)
3、多条件时

$.data[?(@.attribute ==1&&@.productKind==2)].productId

先过滤再取值

result = jsonpath.jsonpath(r, "$..[?(@.compareDataCode != None)..compareDataCode]")
print(result)
过滤表达式
"$..[?(@.compareChannelName != None)..compareChannelName]"
'$.data.0.priceConfigList[?(@.description == "安卓价")].price'
f"$..[?(@.id == '{id}')].code"    # 引用的id是字符串格式,需要在大括号外加个引号

jsonpath.jsonpath(res, f"$..[?(@.containRoute == True && @.containThreeD == True && @.groupKey == \"{groupKey}\")..sessionIds]")
{
    "data": {
        "itemList": [
            {
                "icon": "http:0f9ccf9934984e369659068b145b91bc.png",
                "kemu": "1",
                "title": "科一速成修改"
            },
            {
                "icon": "http:659cf1de1f93418894bc8dd0208fc804.png",
                "kemu": "4",
                "title": "科四速成^_^"
            }
        ]
    },
    "errorCode": 0,
    "message": null,
    "success": true
}

提取节点kemu 符合要求下的icon或title,icon或title可以放在表达式中扩号里面或外面,没有影响

 expect = {
            f"$..[?(@.kemu == '{kemu}')].icon": icon,  # 车型
            f"$..[?(@.kemu == '{kemu}')].kemu": kemu,  # 科目
            f"$..[?(@.kemu == '{kemu}').title]": title  # 标题
        }

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值