【问题标题】:Creating array Json object with variables (form csv) at Jmeter using JSR223 PreProcessor使用 JSR223 PreProcessor 在 Jmeter 中创建带有变量(来自 csv)的数组 Json 对象
【发布时间】:2020-12-25 18:15:02
【问题描述】:

我对脚本很陌生。我已经搜索了很长时间,并在这一点上卡住了。 我正在尝试使用 csv 文件中的变量在 Jmeter JSR223 PreProcessor 上创建一个 json 数组以在 Jmeter 上发布。

json结构是;

[
    {
        "id": "${FacId}",
        "name": "${Name}",
        "type": "Facility"
    }
]

我可以从 csv 读取变量并将 id 和 name 设置为数组使用;

def builder = new groovy.json.JsonBuilder()

@groovy.transform.Immutable
class BSO{
    String id
    String name
}

def units = new File("/Users/gulcei/Documents/TPTest/test.csv")
    .readLines()
    .collect { line ->
        new BSO (line.split(",")[0], line.split(",")[1]) }

builder(
    units.collect(),
    type: "Facility"
)
log.info(builder.toPrettyString())
vars.put("payload",  builder.toPrettyString())

但其余的值不在数组中,它返回为;

[
    {
        "type": "Facility"
    },
    [
        {
            "id": "id1",
            "name": "Facility1"
        },
        {
            "id": "id2",
            "name": "Facility2"
        }
    ]
]

还有一件事;如果我尝试添加一个包含两个组件的值;

[
    {
        "id": "${FacId}",
        "name": "${Name}",
        "type": "Facility",
        "location": {
            "latitude": 0,
            "longitude": 0
        }
    }
]

我收到“意外令牌”错误。我想我试图把它放在错误的格式中。

你能帮我处理一下吗?

提前谢谢...

【问题讨论】:

    标签: json jmeter jsr223


    【解决方案1】:

    我得到了朋友的帮助,我的问题现在已经解决了。这是其他人需要的代码;

    class BSO{
        String id
        String name
        Location location
        String type
        
        BSO(id,name){
            this.id=id
            this.name=name
            this.location=new Location()
            this.type="Facility"
        }
    }
    
    class Location{
        int latitude = 0
        int longitude = 0
    }
    
    def builder = new groovy.json.JsonBuilder()
    def units = new File("/Users/Documents/Test/test.csv")
                    .readLines()
                    .collect { line ->
                        new BSO (line.split(",")[0], line.split(",")[1])}
    builder(
                    units.collect()
            )
    log.info(builder.toPrettyString())
    vars.put("payload",  builder.toPrettyString())
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多