【问题标题】:grails groovy - convert xml to JSONgrails groovy - 将 xml 转换为 JSON
【发布时间】:2014-04-15 12:02:58
【问题描述】:

我阅读了很多关于将 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>

时髦:

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 的所有结构,并且在客户端我有一个错误: “意外的标识符”

【问题讨论】:

标签: jquery xml json grails groovy


【解决方案1】:

老兄! 这工作正常,'Groovy Console',但至少没有 "unexpected identifier" 错误..

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 真的很棒!

【讨论】:

  • 在输出中没有 dataname 和 str 属性,我也应该有它们。而且我在 GSP 视图中仍然有 unexpected identifier :(
  • @Jils 你应该调整这段代码来处理你的标签...老兄这真的对我有用 尝试在这里过去所有的堆栈跟踪...
  • @danielad - 感谢您的帖子,我正在寻找与此类似的内容,但格式几乎没有变化... {"mode":[{"data":"ABC"},{ "文件":"DEF"},{"文件":"GHI"},{"文件":"JKL"},{"数据":"MNO"},{"数据":"PQR"},{ "数据":"STV"}]}
猜你喜欢
  • 2013-09-20
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多