微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 JSR223 预处理器在 Jmeter 上创建带有变量形式 csv的数组 Json 对象

如何解决使用 JSR223 预处理器在 Jmeter 上创建带有变量形式 csv的数组 Json 对象

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

json结构为;

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

我可以从 csv 读取变量并使用;

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}","type": "Facility","location": {
            "latitude": 0,"longitude": 0
        }
    }
]

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

你能帮我处理一下吗。

提前致谢...

解决方法

我从朋友那里得到了一些帮助,现在我的问题解决了。这是代码以防其他人需要它;

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())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。