tomaszarmata
10 years agoContributor
Bulding json from xml
Hello,
I have tried to build json body from xml. Take file, parse it, make groovy object, then json.
I build groovyObject first becouse I need in next steps to set up values for method, path and synchronize-type. I need also to be aware of xml file changes like new parameters etc.
I follow up http://stackoverflow.com/questions/18830248/converting-xml-to-json-in-groovy.
import groovy.json.JsonBuilder def doc = ''' <resources> <resource> <name>synchronize</name> <parameters> <parameter> <name>method</name> </parameter> <parameter> <name>path</name> </parameter> <parameter> <name>synchronization-type</name> </parameter> </parameters> </resource> </resources> ''' def parsedXml = new XmlParser().parseText( doc ) def groovyObject = [ (parsedXml.resource.name.text()): parsedXml.resource.parameters.parameter.collect { [ (it.text()): null ] } ] def jsonObject = new JsonBuilder ( groovyObject ) log.info jsonObject
But it return
{
"synchronize": [
{
"method": null
},
{
"path": null
},
{
"synchronization-type": null
}
]
}
Is there somethink I can do to make script to return:
{ "synchronize": [ { "method": null, "path": null, "synchronize-type": null } ] }
After some discusion i try do it that way.
def rootName = null def root = [:] def connector = [] def map = [:] rootName = parsedXml.resource.name.text() parsedXml.resource.parameters.parameter.each{ map.put( it.text(), null ) } connector.add(map) root.put (rootName,connector)