JMeter中如何解码JSON请求数据值并对解码后的值使用计数器
JSON payload data字段解码及计数操作流程
1. 解码JSON请求payload中的data字段
根据data字段常用的编码方式,对应操作如下:
- Base64编码(含URL安全Base64)
Python示例代码:import base64 import json # 解析原始请求payload raw_payload = json.loads(request.body) encoded_data = raw_payload["data"] # 补全Base64填充符后解码,解码后转成UTF-8字符串 decoded_str = base64.b64decode(encoded_data + '=' * (-len(encoded_data) % 4)).decode("utf-8") # 若解码后内容为JSON结构,再转成可操作的字典 decoded_data = json.loads(decoded_str) - URL编码
Python示例代码:from urllib.parse import unquote import json raw_payload = json.loads(request.body) encoded_data = raw_payload["data"] decoded_str = unquote(encoded_data) decoded_data = json.loads(decoded_str) - Unicode转义格式
直接通过JSON解析即可,解析器会自动处理转义字符,无需额外解码操作。
注意:如果data字段为自定义加密(如AES、RSA加密),需要提前拿到对应加密密钥、偏移量等参数,按照加密算法规则解密后再解析内容。
2. 解码后特定值的计数器实现
分两种常见场景选择实现方式:
- 临时统计(单进程运行,服务重启后计数清零)
用Python内置的collections.Counter实现即可:from collections import Counter # 初始化全局计数器 value_counter = Counter() # 每次解码完data后,取出你要统计的特定字段值,比如统计order_type的出现次数 target_value = decoded_data.get("order_type") # 替换为你需要统计的字段名 if target_value: # 对应值计数+1 value_counter.update([target_value]) # 查看指定值的当前计数 print(value_counter[target_value]) - 持久化统计(跨进程、服务重启计数不丢失,适合生产环境)
用Redis的incr命令实现:import redis # 初始化Redis连接 redis_client = redis.Redis(host="127.0.0.1", port=6379, db=0) target_value = decoded_data.get("order_type") if target_value: # 自定义计数键名,计数自动+1 current_count = redis_client.incr(f"count:order_type:{target_value}") print(f"当前值{target_value}的累计计数为{current_count}")
内容的提问来源于stack exchange,提问作者ALIEN
相关产品推荐
相关产品推荐

