如何在groovy中使用map创建JSON
在groovy中,如何使用下面的输入在下面的两种结构中创建输出json。我已经用java做过了,但是我不知道如何用groovy做 输入:如何在groovy中使用map创建JSON,groovy,Groovy,在groovy中,如何使用下面的输入在下面的两种结构中创建输出json。我已经用java做过了,但是我不知道如何用groovy做 输入: { "name": "app", "test2": [ { "status": [ { "id": 1, "pole": [ {
{
"name": "app",
"test2": [
{
"status": [
{
"id": 1,
"pole": [
{
"Color": "RED",
"Status": 0
},
{
"Color": "AMBER",
"Status": 0
},
{
"Color": "GREEN",
"Status": 0
}
]
},
{
"id": 2,
"pole": [
{
"Color": "RED",
"Status": 0
},
{
"Color": "AMBER",
"Status": 0
},
{
"Color": "GREEN",
"Status": 0
}
]
}
]
},
{
"status": [
{
"id": 1,
"pole": [
{
"Color": "RED",
"Status": 0
},
{
"Color": "AMBER",
"Status": 0
},
{
"Color": "GREEN",
"Status": 0
}
]
},
{
"id": 2,
"pole": [
{
"Color": "RED",
"Status": 0
},
{
"Color": "AMBER",
"Status": 0
},
{
"Color": "GREEN",
"Status": 0
}
]
}
]
}
]
}
输出1:
应该生成一对多输出,通过迭代需要生成以下结构的多个输出。与以下输出一样,它应该生成12个JSON对象
{
"OUTPUT": {
"STATUS": {
"id": "1",
"color": "RED"
}
}
}
输出2:
{
"OUTPUT": {
"STATUS": [{
"id": "1",
"color": "RED"
},{
"id": "1",
"color": "AMBER"
}
.
.
{
"id": "2",
"color": "RED"
}
]
}
}
因为我是groovy的新手,所以我不太清楚如何做到这一点
下面是到目前为止我已经尝试过的代码
import groovy.json.*;
def data='''{"name": "app","test2": [{"status": [{"id": 1,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]},{"id": 2,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]}]},{"status": [{"id": 1,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]},{"id": 2,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]}]}]}'''
def data1 = new JsonSlurper().parseText( data );
def a=[:]
def OU=[:]
def status=[]
a.OUTPUT=OU
OU.STATUS=status
for(def i=0;i<data1.test2.size();i++){
for(def j=0;j<data1.test2[i].status.size();j++){
def b=[:]
b.id=data1.test2[i].status[j].id
for(def k=0;k<data1.test2[i].status[j].pole.size();k++){
b.color=data1.test2[i].status[j].pole[k].Color
status<<b
}
}
}
String finalJson = JsonOutput.toJson a;
println finalJson
import groovy.json.*;
def data='{“name”:“app”,“test2”:[{“status”:[{“id”:1,“pole”:[{“Color”:“RED”,“status”:0},{“Color”:“AMBER”,“status”:0},{“Color”:“GREEN”,“status”:0}]},{“Color”:“RED”,“status”:0},{“Color”:“GREEN”,“status”:“status”:0},{“Color”:“GREEN”,“status”:“status”:“{“id”:1,“pole”:“Color”:“RED,“状态”:0},{“颜色”:“绿色”,“状态”:0}]},{“id”:2,“极”:[{“颜色”:“红色”,“状态”:0},{“颜色”:“琥珀色”,“状态”:0},{“颜色”:“绿色”,“状态”:0}]}]}''
def data1=new JsonSlurper().parseText(数据);
def a=[:]
def OU=[:]
def状态=[]
a、 输出=OU
OU.STATUS=状态
对于(defi=0;i100%不是输出应该是什么样子,而是脚本
import groovy.json.*
def data='''{"name": "app","test2": [{"status": [{"id": 1,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]},{"id": 2,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]}]},{"status": [{"id": 1,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]},{"id": 2,"pole": [{"Color": "RED","Status": 0},{"Color": "AMBER","Status": 0},{"Color": "GREEN","Status": 0}]}]}]}'''
def data1 = new JsonSlurper().parseText data
def output = [ OUTPUT:[
STATUS:data1.test2.status.inject( [] ){ res, curr ->
curr.each{ stat ->
stat.pole.each{
res << [ id:stat.id, color:it.Color ]
}
}
res
}
] ]
println JsonOutput.prettyPrint( JsonOutput.toJson( output ) )
(对我)不清楚期望的输出应该是什么。您有两组期望的输出吗?我已经更新了问题,我的代码正在运行。您能检查一下创建JSON的正确方法吗?我是groovy新手。我正在使用groovy脚本创建JSON规范化,但这是通过使用输入和输出JSON映射动态生成的,我正在创建groovyscript使用JAVA并上传到引擎。因此,如果上述方法有效,那么我将继续,因为在上述方法中,生成脚本很容易,但是如果我使用JSONBuilder和闭包,那么生成脚本可能会很困难。因此,我只需要在这里输入。我已经更新了问题,我的代码正在运行,你能告诉我吗检查是否是创建JSON的正确方法,因为我是groovy新手。我使用groovy脚本创建JSON规范化,但这是通过使用输入和输出JSON映射动态生成的,我使用JAVA创建groovyscript并上载到引擎。因此,如果上述方法有效,那么我将继续,因为在上述方法中生成脚本很容易,但如果我使用JSONBuilder和闭包,那么生成脚本可能会很困难。因此,我只需要在这里输入您的输入。是的,谢谢您,但由于我使用需要部署的JAVA动态生成脚本。我想要像我编写的那样的编码模式,所以脚本生成逻辑将很容易。所以,如果你能提供一些信息,比如这种方法是否有效,这会很有帮助?
{
"OUTPUT": {
"STATUS": [
{
"id": 1,
"color": "RED"
},
{
"id": 1,
"color": "AMBER"
},
{
"id": 1,
"color": "GREEN"
},
{
"id": 2,
"color": "RED"
},
{
"id": 2,
"color": "AMBER"
},
{
"id": 2,
"color": "GREEN"
},
{
"id": 1,
"color": "RED"
},
{
"id": 1,
"color": "AMBER"
},
{
"id": 1,
"color": "GREEN"
},
{
"id": 2,
"color": "RED"
},
{
"id": 2,
"color": "AMBER"
},
{
"id": 2,
"color": "GREEN"
}
]
}
}