在 groovy 中循环遍历 Map

时间:2021-02-16 08:08:22

标签: json groovy

我在 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

2 个答案:

答案 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
}