jsonpath使用

1、jsonpath介绍:

        首先,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。直白点的话就是独立的可以配合多种语言进行匹配的目标值的一种类库,和jmeter中的jsonPath匹配方式很像

2、语法说明:

        JSONPath 表达式总是以与 XPath 表达式与 XML 文档结合使用的相同方式引用 JSON 结构。由于 JSON 结构通常是匿名的并且不一定具有“根成员对象”,因此 JSONPath 假定$分配给外层对象的抽象名称。
JSONPath 表达式可以使用点符号
$.store.book[0].title
或括号 -符号
$['store']['book'][0]['title']
对于输入路径。内部或输出路径将始终转换为更通用的括号 -符号。
JSONPath 允许将通配符* 用于成员名称和数组索引。它借用后代从操作者“..” E4X和阵列切片语法提案[start:end:step]从EcmaScript的4。
底层脚本语言的表达式(<expr>)可以用作显式名称或索引的替代,如
$.store.book[(@.length-1)].title
对当前对象使用符号“@”。过滤器表达式通过语法的支持?(<boolean expr>),如
$.store.book[?(@.price < 10)].title
这是 JSONPath 语法元素与其对应的 XPath 的完整概述和并排比较

 3、举例说明,结合实列对比说明:        

data = { "store": {
    "book": [ 
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

  匹配结果:

4、以实际订单数据举例:

import jsonpath

testdata = {    
  "code": 0,    
  "status": 1,
  "data": {
        "list": [
            {
                "stockOutId": "1467422726779043840",
                "orderId": "1467422722362441728",
                "id": "1467422722362441728",
                "stockOutStatus": {
                    "name": "待出库",
                    "value": 0,
                    "description": "待出库"
                },
                "orderStatus": {
                    "name": "待付款",
                    "value": 0,
                    "description": "待付款"
                },
                "orderPayType": {
                    "name": "货到付款",
                    "value": 1,
                    "description": "货到付款"
                },
                "orderDeliveryWay": {
                    "name": "物流配送",
                    "value": 0,
                    "description": "物流配送"
                },
                "orderTradeType": {
                    "name": "即时到帐交易",
                    "value": 4,
                    "description": "即时到帐交易"
                },
                "stockOutType": {
                    "name": "制单出库",
                    "value": 1,
                    "description": "制单出库"
                },
                "creator": 9002257,
                "reviser": 9002257,
                "createTime": "2021-12-05 17:16:55",
                "shippingFee": 0,
                "totalAmount": 629,
                "sumProductPayment": 629,
                "currency": "RMB",
                "toFullName": "张德天",
                "toAddress": None,
                "toFullAddress": "湖北省武汉市洪山区街道口",
                "storageName": "初始仓库",
  
  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值