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 语句

如何在 Grails 3 中使用外部 .groovy 配置文件

如何将 Grails 服务注入 src/groovy 类

Grails - 将数据添加到 bootstrap.groovy 时不会打开 localhost