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

JMeter中字符串数组变量传入GraphQL被转为字符串如何解决?

JMeter传递字符串数组到GraphQL的实现方法

问题根因

JMeter默认存储的字符串类型变量如果直接包含[]格式的数组内容,在GraphQL请求的变量结构中如果被双引号包裹,会被整体识别为字符串,无法解析为数组类型。

可行解决方案

方案1:存储标准JSON格式数组字符串,引用时省略外层引号

在Groovy PostProcessor中生成数组后,直接转成标准JSON格式再存储为JMeter变量:

import groovy.json.JsonBuilder
// 此处替换为你自己生成字符串数组的业务逻辑
def targetStrArray = ["user101", "user102", "user103"]
// 转成标准JSON数组字符串后存储
vars.put("graphql_input_array", new JsonBuilder(targetStrArray).toString())

在GraphQL请求的Variables面板中直接引用变量,不要给变量外层加双引号:

{
  "queryInput": {
    "userIds": ${graphql_input_array}
  }
}

JMeter替换变量后会直接生成标准JSON数组结构,GraphQL可正常识别为数组类型。

方案2:存储数组对象,请求时动态转JSON

如果数组需要在多个地方复用逻辑,可以直接将数组对象存入JMeter变量,请求时再动态转JSON:

  1. Groovy PostProcessor中存储对象:
def targetStrArray = ["user101", "user102", "user103"]
vars.putObject("raw_array_obj", targetStrArray)
  1. GraphQL变量中通过__groovy函数动态转JSON:
{
  "queryInput": {
    "userIds": ${__groovy(new groovy.json.JsonBuilder(vars.getObject("raw_array_obj")).toString(),)}
  }
}

方案3:已有数组格式字符串的快速适配

如果你已经生成了符合JSON规范的数组字符串(比如内容为["a","b","c"]的字符串变量),只需要在GraphQL变量中引用时去掉外层双引号即可,不要写成"${your_variable}",直接写${your_variable}即可正常识别。

注意事项

  • 不要手动拼接JSON数组字符串,使用JsonBuilder会自动处理特殊字符转义,避免引号、换行等字符破坏JSON结构
  • 如果数组元素为数字、布尔等非字符串类型,上述方法同样适用,JsonBuilder会自动保留对应数据类型
  • 不要在数组变量外层包裹多余的双引号,否则会被GraphQL识别为普通字符串

内容的提问来源于stack exchange,提问作者SheWolf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:36:10