Разбор Groovy Json в значение ключа - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь разобрать Json с помощью jsonslurper Groovy.Я хотел бы углубиться в элементы "id" и "label" и создать из них пару ключ: значение.Это моя попытка:

def slurper = new groovy.json.JsonSlurper()
def json = slurper.parseText(myjson)
result = [:]

 json.each {
 result.put(json.menu.items.id,json.menu.items.label)

 }

println result
​

То, что я ожидаю, является результатом:

[[Open, null], [OpenNew, Open New], [Zoomin, Zoom In] и т. Д.....]

Я получаю один список идентификаторов и один список меток.Любое предложение о том, как получить желаемый результат?Вот тот Json, которого я кормлю ...

{  
   "menu":{  
      "header":"SVG Viewer",
      "items":[  
         {  
            "id":"Open"
         },
         {  
            "id":"OpenNew",
            "label":"Open New"
         },
         null,
         {  
            "id":"ZoomIn",
            "label":"Zoom In"
         },
         {  
            "id":"ZoomOut",
            "label":"Zoom Out"
         },
         {  
            "id":"OriginalView",
            "label":"Original View"
         },
         null,
         {  
            "id":"Quality"
         },
         {  
            "id":"Pause"
         },
         {  
            "id":"Mute"
         },
         null,
         {  
            "id":"Find",
            "label":"Find..."
         },
         {  
            "id":"FindAgain",
            "label":"Find Again"
         },
         {  
            "id":"Copy"
         },
         {  
            "id":"CopyAgain",
            "label":"Copy Again"
         },
         {  
            "id":"CopySVG",
            "label":"Copy SVG"
         },
         {  
            "id":"ViewSVG",
            "label":"View SVG"
         },
         {  
            "id":"ViewSource",
            "label":"View Source"
         },
         {  
            "id":"SaveAs",
            "label":"Save As"
         },
         null,
         {  
            "id":"Help"
         },
         {  
            "id":"About",
            "label":"About Adobe CVG Viewer..."
         }
      ]
   }
}

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете сделать это

def result = new JsonSlurper()
    .parseText(json)
    .menu
    .items
    .findAll() // Throw away the 4 `null` ones
    .collect { [ it.id, it.label ] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...