Reputation: 13
I have a JSON map in groovy
{
"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"
}
}
Defined as
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"}}
I can access its data like this
println (object.server1.Hostname)
OUTPUT >> YBDEL430OW02
println (object.server2.Hostname)
OUTPUT >> YBDEW430OW01
But what i want is something like this so it can iterate it in a loop
for(int i = 0;i<3;i++) {
println (object.server[i].Hostname);
}
OUTPUT >> YBDEL430OW02
OUTPUT >> YBDEL430OW01
OUTPUT >> YBDEL430OR07
Upvotes: 0
Views: 220
Reputation: 484
Maybe you like this solution:
for(int i = 0;i<3;i++) {
println object."Server${i+1}".Hostname
}
Upvotes: 0
Reputation: 171084
A full answer would be:
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
}
Upvotes: 1