2015-12-09 2 views
0

Как взять значения пары ключ/значение карты groovy и петли в элементы массива JSON в groovy ?.Преобразуйте пару ключей значения карты на элементы массива JSON

Например:

ввода:

Защиту 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]

Ожидаемое Вывод в формате JSON:

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

}

+0

Возможный дубликат [Как конвертировать HashMap в объект JSON в Java] (http://stackoverflow.com/questions/12155800/how-to-convert-hashmap-to-json-object-in-java) –

+0

Карта преобразуется в карту JSON, а не в массив JSON. Для этого сначала преобразуйте карту в список карт с парами ключ-значение по мере необходимости. Затем вызовите новый JSONObject (список); –

+0

Вы можете показать, что вы пробовали ... –

ответ

1

Это работает для вашего примера. Это не сработает, если у вас будет более глубокое гнездование.

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

Кажется, сегодня у меня проблема чтения. Теперь код выводит результат из вашего примера ... Я обещаю :) –

+0

Спасибо, много бр .. отлично работает;) –

+1

Ну .. Что, если я хочу работать с ним для более глубокого гнездования? Есть ли изменение кода для Это –

Смежные вопросы