Как преобразовать xml в json в Groovy?

В groovy у меня есть XML ниже

<data>
   <row>
      <id>USA</id>
      <value>United States of America</value>
   </row>
   <row>
      <id>CAN</id>
      <value>Canada</value>
   </row>
</data>

Мне нужно преобразовать приведенный выше xml в groovy в приведенный ниже формат json.

{
   "data": [
      {
         "KEY": "USA",
         "VALUE": "United States of America"
      },
      {
         "KEY": "CAN",
         "VALUE": "Canada"
      }
   ]
}

Любая помощь будет принята с благодарностью.

Спасибо

Хари


person hpandalai    schedule 05.07.2017    source источник


Ответы (1)


Ну вот:

//Pass xml as string to below parseText method
def parsed = new XmlSlurper().parseText(xml)
//Create the map as needed out of parsed xml
def map = [(parsed[0].name): parsed.'**'
  .findAll{it.name() == 'row'}
  .collect{ row ->
     row.collectEntries{[KEY: row.id.text(), VALUE:row.value.text()]}
   }
]
println new groovy.json.JsonBuilder(map).toPrettyString()

Вы можете быстро опробовать его онлайн Демо

person Rao    schedule 05.07.2017
comment
Просто придирка: row.collectEntries{ ... } там не нужно - достаточно ... - person cfrick; 06.07.2017