Ashwani Singh
Ashwani Singh

Reputation: 13

Loop through Map in groovy

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

Answers (2)

Catalin
Catalin

Reputation: 484

Maybe you like this solution:

for(int i = 0;i<3;i++) {
    println object."Server${i+1}".Hostname
}

Upvotes: 0

tim_yates
tim_yates

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

Related Questions