首页 文章

将groovy贴图的键值对转换为JSON数组元素

提问于
浏览
0

如何获取groovy map的键/值对值并循环到groovy中的JSON数组元素?

例如:

Input

def childmap = [“data1”:“123”,“data2”:“234”,“data3”:“456”]

def childmap2 = [“data4”:“123”,“data5”:“234”,“data6”:“456”,“date7”:“676”]

def parentmap = [“Key1”:“Value1”,“Key2”:“Value2”,“Key3”:childmap,“key4”:childmap2]

Expected JSON Output

{
 "Json":{
   "Key1":"Value1",
   "Key2":"Value2"
   "key3":[
      {
         "Name": "data1",
         "ID": "123"
      },
      {
         "Name": "data2",
         "ID": "234"
      },
      {
          "Name": "data3",
          "ID": "456"
      }
   ],
  "key4":[
      {
         "Name": "data4",
         "ID": "123"
      },
      {
         "Name": "data5",
         "ID": "123"
      },
      {
         "Name": "data6",
         "ID": "234"
      },
      {
          "Name": "data7",
          "ID": "456"
      }
   ]
}

}

1 回答

  • 2

    这适用于您的示例 . 如果您有更深的嵌套,这将无法工作 .

    def newmap = parentmap.collectEntries { key, value ->
        [key, (value instanceof Map) ? value.collect {key2, value2 -> [Name: key2, ID: value2]} : value]}
    
    
    def builder = new JsonBuilder([Json : newmap])
    println builder.toPrettyString()
    

相关问题