我需要将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_list
和target_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":{}
]
}
}
这可能吗?
谢谢!
答案 0 :(得分:1)
这是不可能的,因为第二个示例不是有效的JSON,您可以使用online JSON Validator自己检查它。
通常,您应该可以使用JSONSlurper和JSONBuilder的组合,例如:
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())
演示:
上面的代码生成有效的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]