json - Groovy使用匿名数组将json转换为xml失败

标签 json xml grails

我有以下代码将json转换为xml:

import grails.converters.JSON
import grails.transaction.Transactional
import org.json.JSONObject
import org.json.XML

@Transactional
class JsonService {

    def convertJsonToXml(String json) {
        JSONObject o = JSON.parse(json)
        return XML.toString(o)
    } 

}

此代码可以正常工作,但带有匿名数组的json除外。
例如:
[
  {
    "cnt":1,
    "name":"American",
    "pk":7
  },
  {
    "cnt":2,
    "name":"Celebrities",
    "pk":3
  },
  {
    "cnt":1,
    "name":"Female",
    "pk":2
  } 
]

我得到这个结果:
{“空”:false}

如何避免这个问题?

最佳答案

您正在混合库:
现在,您正在通过grails.converters.JSON解析json字符串,这将生成org.codehaus.groovy.grails.web.json.JSONElement对象。

那么您正在尝试将此结果适合org.json.JSONObject,以使其通过org.json.XML转换为XML

只需通过org.json.JSONTokener解析String,然后使变量“o”成为动态变量(即可容纳JSONObject或JSONArray):

import org.json.JSONObject
import org.json.JSONTokener
import org.json.XML

def convertJsonToXml(String json) {
    def o = new JSONTokener(json).nextValue()
    return XML.toString(o)
}

关于json - Groovy使用匿名数组将json转换为xml失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39390407/

相关文章:

r - 如何使用RCurl进行身份验证以发布Spring Security/Grails应用

c# - 如何使用C#在xml中添加带有标签的属性

java - 当前选择的 JAXB 库提供程序无效

grails - 使用Grails REST Client Builder进行Rest API测试

javascript - 如何获取动态创建的输入字段的值(Json)

php - 将计划的 XML 解析放入 SQL 数据库的最简单方法是什么?

eclipse - 针对 Groovy/Grails 开发从 Eclipse 切换到 IntelliJ

javascript - 创建特定格式的 JSON 数据

iOS objectmapper,用数组映射 json

jquery - 追加要发布到 ajax 序列化数据的变量