我在 groovy 中有一个 JSON 映射
{
"Server1":{
"Hostname":"YBDEL430OW02",
"Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/",
"Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"
},
"Server2":{
"Hostname":"YBDEW430OW01",
"Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/",
"Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"
},
"Server3":{
"Hostname":"YBDEL430OW01",
"Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/",
"Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"
}
}
定义为
def object = {"Server1":{"Hostname":"YBDEL430OW02","Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/","Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"},"Server2":{"Hostname":"YBDEW430OW01","Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/","Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"},"Server3":{"Hostname":"YBDEL430OR07","Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/","Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"}}
我可以像这样访问它的数据
println (object.server1.Hostname)
OUTPUT >> YBDEL430OW02
println (object.server2.Hostname)
OUTPUT >> YBDEW430OW01
但我想要的是这样的东西,所以它可以在循环中迭代
for(int i = 0;i<3;i++) {
println (object.server[i].Hostname);
}
OUTPUT >> YBDEL430OW02
OUTPUT >> YBDEL430OW01
OUTPUT >> YBDEL430OR07
答案 0 :(得分:1)
完整的答案是:
import groovy.json.*
def json = ''' {
"Server1":{
"Hostname":"YBDEL430OW02",
"Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/",
"Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"
},
"Server2":{
"Hostname":"YBDEW430OW01",
"Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/",
"Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"
},
"Server3":{
"Hostname":"YBDEL430OW01",
"Jboss_Home":"/weblogic/JBOSS/jboss-eap-6.4/",
"Conf_File_Path":"/weblogic/apache-tomcat-8.5.34/Conf_File_Path"
}
}
'''
def jsonMap = new JsonSlurper().parseText(json)
jsonMap.each { key, value ->
println value.Hostname
}
答案 1 :(得分:0)
也许您喜欢这个解决方案:
for(int i = 0;i<3;i++) {
println object."Server${i+1}".Hostname
}