我有以下代码将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/