grails groovy - 将xml转换为JSON
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grails groovy - 将xml转换为JSON相关的知识,希望对你有一定的参考价值。
我读了很多关于将xml转换为JSON的帖子,但我没有找到适合我案例的解决方案。我想向客户端发送转换为JSON的xml数据,然后用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);
我试图使用这里描述的解决方案:Converting XML to JSON in 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"]}]}
完成!感谢Tim here真的很好的工作!
以上是关于grails groovy - 将xml转换为JSON的主要内容,如果未能解决你的问题,请参考以下文章
groovy jsonOutput将中文转为Unicode的问题
如何将 gradle 中的 groovy 任务转换为 Gradle Kotlin DSL 以生成 pom.xml?
在 Grails 的 JavaScript 源代码中执行 groovy 语句