Csv 如何在Jmeter中创建动态JSON?

Csv 如何在Jmeter中创建动态JSON?,csv,groovy,jmeter,Csv,Groovy,Jmeter,我有一个csv文件,它看起来像: Client_id, uid 1 a 1 b 1 c 2 d 2 e (一个客户端id可以有一些UID) 我需要用Jmeter发送一个请求。请求应如下所示: { "${uida}":["DCC","BALANCE","SECURITY","INET_LIMIT","SHOPPING_PIN"], "${uidb}":["DCC","BALANCE

我有一个csv文件,它看起来像:

Client_id, uid
1           a
1           b
1           c
2           d
2           e
(一个客户端id可以有一些UID)

我需要用Jmeter发送一个请求。请求应如下所示:

{
    "${uida}":["DCC","BALANCE","SECURITY","INET_LIMIT","SHOPPING_PIN"],
    "${uidb}":["DCC","BALANCE","SECURITY","INET_LIMIT","SHOPPING_PIN"],
    "${uidc}":["DCC","BALANCE","SECURITY","INET_LIMIT","SHOPPING_PIN"]
}
并且客户端id必须位于标头中。
我该怎么做?

要从CSV文件创建JSON负载:

  • 添加为要参数化的采样器的子级
  • 将以下代码放入“脚本”区域:

  • 它将以所需的格式创建主体

    参考资料:

    关于标题-您可以通过添加它,不幸的是,您的问题没有足够的信息来建议全面的配置

    import groovy.json.JsonBuilder
    import groovy.json.internal.LazyMap
    
    def lines = new File('test.csv').readLines()
    def uids = lines[1..lines.size() - 1].collect { line -> line[2] }
    def value = ["DCC", "BALANCE", "SECURITY", "INET_LIMIT", "SHOPPING_PIN"]
    def payload = new LazyMap()
    uids.each { uid ->
        payload.put(uid, value)
    }
    sampler.addNonEncodedArgument('', new JsonBuilder(payload).toPrettyString(), '')
    sampler.setPostBodyRaw(true)