python中接口自动化中jsonpath详解

python在在进行接口关联的时候经常会用到参数提取,对于json格式的提取这个时候jsonpath提取器就很常用,这边主要分享一下jsonpath的详细用法

1.jsonpath的语法

(1)特点:只能提取json格式的数据,提取后的数据类型与原数据类型一致

(2)语法

原字符描述
$表示根元素
@当前元素
. or []子元素
递归搜索(不管当前路径,搜索符合条件的数据)
*通配符,表示所有的元素
[]子元素操作符
[,]支持迭代器中做多选,多个key用逗号隔开
[start:end:step]数组分割操作,等同于切片
?()应用过滤表示式

(3)jsonpath 提取完的数据是列表,如果想要里面具体的值需要按照列表的方式取其中列表中的值

(4)举例测试数据如下:

{
    "success": true,
    "result": {
        "codeInfo": {
            "code": 0,
            "msg": "成功"
        },
        "data": [{
                "value": "111",
                "des": "验收单A4纸"
            },
            {
                "value": "13",
                "des": "任务单打印"
            },
            {
                "value": "12",
                "des": "收货核查单"
            },
            {
                "value": "11",
                "des": "容器打印"
            },
            {
                "value": "5",
                "des": "盘点单"
            },
            {
                "value": "8",
                "des": "标签打印"
            },
            {
                "value": "6",
                "des": "发货单"
            },
            {
                "value": "4",
                "des": "预检单"
            },
            {
                "value": "3",
                "des": "出库单"
            },
            {
                "value": "104",
                "des": "验收单两联纸"
            },
            {
                "value": "2",
                "des": "验收单两联纸"
            },
            {
                "value": "1",
                "des": "验收单A4纸"
            },
            {
                "value": "15",
                "des": "商品提总单"
            },
            {
                "value": "22",
                "des": "生鲜预检单A4"
            },
            {
                "value": "9",
                "des": "自提点简编"
            },
            {
                "value": "100",
                "des": "验收单A4纸"
            },
            {
                "value": "10",
                "des": "自提点提货单"
            },
            {
                "value": "7",
                "des": "路线对货单"
            },
            {
                "value": "16",
                "des": "周转物出库单打印"
            }
        ]
    },
    "traceId": "e993891ac238651e92cf8a1da724704e"

import jsonpath
json1={
	"success": 'true',
	"result": {
		"codeInfo": {
			"code": 0,
			"msg": "成功"
		},
		"data": [{
				"value": "111",
				"des": "验收单A4纸"
			},
			{
				"value": "13",
				"des": "任务单打印"
			},
			{
				"value": "12",
				"des": "收货核查单"
			},
			{
				"value": "11",
				"des": "容器打印"
			},
			{
				"value": "5",
				"des": "盘点单"
			},
			{
				"value": "8",
				"des": "标签打印"
			},
			{
				"value": "6",
				"des": "发货单"
			},
			{
				"value": "4",
				"des": "预检单"
			},
			{
				"value": "3",
				"des": "出库单"
			},
			{
				"value": "104",
				"des": "验收单两联纸"
			},
			{
				"value": "2",
				"des": "验收单两联纸"
			},
			{
				"value": "1",
				"des": "验收单A4纸"
			},
			{
				"value": "15",
				"des": "商品提总单"
			},
			{
				"value": "22",
				"des": "生鲜预检单A4"
			},
			{
				"value": "9",
				"des": "自提点简编"
			},
			{
				"value": "100",
				"des": "验收单A4纸"
			},
			{
				"value": "10",
				"des": "自提点提货单"
			},
			{
				"value": "7",
				"des": "路线对货单"
			},
			{
				"value": "16",
				"des": "周转物出库单打印"
			}
		]
	},
	"traceId": "e993891ac238651e92cf8a1da724704e"
}
res=jsonpath.jsonpath(json1,'$..data')  #获取data中所有的数据答案是列表
res1=jsonpath.jsonpath(json1,'$..data[0].value')#获取data中第一个列表中的数据中的valuezh值,答案是一个列表
res2=jsonpath.jsonpath(json1,'$..data[(@.length-1)].value') #获取data中里列表中最后一个数据中value值,答案也是一个列表
print(res)
print(res1)
print(res2)



#输出结果
#res=[[{'value': '111', 'des': '验收单A4纸'}, {'value': '13', 'des': '任务单打印'}, {'value': '12', 'des': '收货核查单'}, {'value': '11', 'des': '容器打印'}, {'value': '5', 'des': '盘点单'}, {'value': '8', 'des': '标签打印'}, {'value': '6', 'des': '发货单'}, {'value': '4', 'des': '预检单'}, {'value': '3', 'des': '出库单'}, {'value': '104', 'des': '验收单两联纸'}, {'value': '2', 'des': '验收单两联纸'}, {'value': '1', 'des': '验收单A4纸'}, {'value': '15', 'des': '商品提总单'}, {'value': '22', 'des': '生鲜预检单A4'}, {'value': '9', 'des': '自提点简编'}, {'value': '100', 'des': '验收单A4纸'}, {'value': '10', 'des': '自提点提货单'}, {'value': '7', 'des': '路线对货单'}, {'value': '16', 'des': '周转物出库单打印'}]]
#res1=['111']
#res2=['16']

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值