Я прочитал много сообщений об конвертации xml в JSON, но я не нашел решения для своего дела. Я хочу отправить на клиентскую сторону данные xml, преобразованные в JSON, затем проанализировать их с помощью jquery.
XML:
<mode name="name" >
<data dataname="STO" str="none">data</data>
<file dataname="FO" str="none">file</file>
<file dataname="STO" str="none">file</file>
<file dataname="STO" str="none">file</file>
<data dataname="FO" str="none">data</data>
<data dataname="STO" str="none">data</data>
<data dataname="FO" str="none">data</data>
</mode>
Groovy:
def xmlTest = new XmlParser().parse(xmlFile)
def nodetest= xmlTest.mode.find {it.'@name' == 'name'}
def jsonObject = [ mode: mode.collect {
[ (it.name()): it.text() ]
} ]
def json = new groovy.json.JsonBuilder( jsonObject )
render(view: "myView", model: [json:json])
return
Jquery:
var obj = $.parseJSON("${json}");
alert(obj);
Я попытался использовать описанное здесь решение: Преобразование XML в JSON в Groovy, но я не получил всю структуру моего xml и на стороне клиента у меня была ошибка: "Неожиданный идентификатор"
чувак! Это прекрасно работает, 'Groovy Console'
, но по крайней мере нет ошибки "неожиданного идентификатора".
import groovy.json.*
def xml ='''<mode name="name" >
<data dataname="STO" str="none">ABC</data>
<file dataname="FO" str="none">DEF</file>
<file dataname="STO" str="none">GHI</file>
<file dataname="STO" str="none">JKL</file>
<data dataname="FO" str="none">MNO</data>
<data dataname="STO" str="none">PQR</data>
<data dataname="FO" str="none">STV</data>
</mode>'''.stripMargin()
def parsed = new XmlParser().parseText( xml )
// Deal with each node:
def handle
handle = { mode ->
if( mode instanceof String ) {
mode
}
else {
[ (mode.name()): mode.collect( handle ) ]
}
}
// Convert it to a Map containing a List of Maps
def jsonObject = [ (parsed.name()): parsed.collect { mode ->
[ (mode.name()): mode.collect( handle ) ]
} ]
// And dump it as Json
def json = new groovy.json.JsonBuilder( jsonObject )
print json
вывод:
{"mode":[{"data":["ABC"]},{"file":["DEF"]},{"file":["GHI"]},{"file":["JKL"]}
,{"data":["MNO"]},{"data":["PQR"]},{"data":["STV"]}]}
Готово! Благодаря Тиму здесь очень хорошая работа!