如何在Locust/Python脚本中移除JSON数组内拼接字符串的引号
解决方法
核心思路是直接保留数字类型的TS_ID列表,而非拼接成字符串,具体修改步骤如下:
1. 修改_get_ts_ids函数,返回数字列表而非拼接字符串
原来的函数可能把选中的TS_ID拼接成了字符串,现在改成读取时转换为整数,直接返回随机选中的数字列表:
def _get_ts_ids(self): import csv import random with open("ts_ids.csv", "r") as f: reader = csv.reader(f) next(reader) # 跳过CSV表头(如果有的话) # 将CSV中的TS_ID字符串转为整数,存入列表 ts_ids = [int(row[0]) for row in reader] # 随机选取10个数字元素,直接返回列表 return random.sample(ts_ids, 10)
2. 构造JSON时直接使用该列表
原来的代码可能是把拼接后的字符串放到数组里,现在直接将函数返回的数字列表赋值给tsIds字段:
# 构造请求的JSON数据 request_json = { "tsIds": self._get_ts_ids() }
关键说明
- 读取CSV时转换为
int:确保TS_ID是数字类型,避免JSON序列化后带引号 - 不要用
join拼接:直接保留列表结构,这样JSON里的tsIds就是多个数字元素组成的数组,而非包含拼接字符串的单元素数组 - 如果TS_ID可能存在非数字格式,可以添加异常处理跳过无效数据:
ts_ids = [] for row in reader: try: ts_ids.append(int(row[0])) except ValueError: # 跳过无效的非数字TS_ID continue
内容的提问来源于stack exchange,提问作者Magnus Jensen
相关产品推荐
相关产品推荐

