Jmeter-使用Groovy / JSR223将JSON名称转换为数组

时间:2018-08-02 01:44:39

标签: java json groovy jmeter

我需要将JSON名称转换为数组的帮助。

{
    "success":true,
    "message":"Unable to get a list of active campaigns",
    "data":{
        "campaign_list":{
            "80f6af8a-9565-11e8-b82b-02f91108fe5a":{},
            "99d5d15c-9565-11e8-aa56-02f91108fe5a":{}
        },
        "target_list":{
            "44d84c8a-8574-11e8-bbe9-02f91108fe5a":{},
            "4fa407a2-8575-11e8-9886-02f91108fe5a":{},
            "ee35e2ba-8579-11e8-b1a3-02f91108fe5a":{},
            "6ced8b0c-857b-11e8-868c-02f91108fe5a":{}
        }
    }
}

我需要将campaign_listtarget_list下的名称存储在这样的数组中:

{
    "success":true,
    "message":"Unable to get a list of active campaigns",
    "data":{
        "campaign_list":[
            "80f6af8a-9565-11e8-b82b-02f91108fe5a":{},
            "99d5d15c-9565-11e8-aa56-02f91108fe5a":{}
        ],
        "target_list":[
            "44d84c8a-8574-11e8-bbe9-02f91108fe5a":{},
            "4fa407a2-8575-11e8-9886-02f91108fe5a":{},
            "ee35e2ba-8579-11e8-b1a3-02f91108fe5a":{},
            "6ced8b0c-857b-11e8-868c-02f91108fe5a":{}
        ]
    }
}

这可能吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

这是不可能的,因为第二个示例不是有效的JSON,您可以使用online JSON Validator自己检查它。

通常,您应该可以使用JSONSlurperJSONBuilder的组合,例如:

log.info('Original: ' + prev.getResponseDataAsString())
def original = new groovy.json.JsonSlurper().parse(prev.getResponseData())
def builder = new groovy.json.JsonBuilder(original)
static def map2list(Map m) {
    def l = []
    m.each() { k, v -> l << k }
    return l;
}
builder.content.data.campaign_list = map2list(original.data.campaign_list)
builder.content.data.target_list = map2list(original.data.target_list)
log.info('Converted: ' + builder.toPrettyString())

演示:

JMeter Groovy Convert Map to List

上面的代码生成有效的JSON并将JSON对象列表转换为JSON数组。如果您需要更多信息,请查看以下材料:


如果您需要将JSON转换为您发布的某种奇怪的结构-恐怕您将不得不将其视为纯文本,因此请使用Regular Expressions{更改为[在需要的地方。

答案 1 :(得分:0)

下面是一些入门的代码。我使用了以下库:groovy.json.JsonSlurper
您可以使用(https://www.jdoodle.com/execute-groovy-online)尝试并运行以下代码。
希望它会有所帮助!

import groovy.json.JsonSlurper

def jsonSlurper = new JsonSlurper()

def object = jsonSlurper.parseText('{"success":true,"message":"Unable to get a list of active campaigns","data":{"campaign_list":{"80f6af8a-9565-11e8-b82b-02f91108fe5a":{},"99d5d15c-9565-11e8-aa56-02f91108fe5a":{}},"target_list":{"44d84c8a-8574-11e8-bbe9-02f91108fe5a":{},"4fa407a2-8575-11e8-9886-02f91108fe5a":{},"ee35e2ba-8579-11e8-b1a3-02f91108fe5a":{},"6ced8b0c-857b-11e8-868c-02f91108fe5a":{}}}}')

println(object.success);
println(object.data.campaign_list);

检索到对象后,可以使用以下代码获取数组:

def arr = object.data.campaign_list as String[]
println arr[0]
println arr[1]