You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:24:03