Gagan changappa
Gagan changappa

Reputation: 43

Convert the groovy map's key value pair to JSON array elements

How to take in key/value pair values of groovy map and loop into JSON array elements in groovy?.

For example:

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"
      }
   ]
}

}

Upvotes: 1

Views: 8464

Answers (1)

Emanuel Seidinger
Emanuel Seidinger

Reputation: 1272

This works for your example. This won't work if you've got deeper nesting.

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()

Upvotes: 2

Related Questions