正在从RESTful服务中读取有问题的JSON,我想将其打印出来(到控制台,尽管在.gsp中也可以),以便进行调试。 Groovy 1.3.7(截至2011年8月的当前版本)使用Groovy 1.7.8(1.8中没有引入JsonOutput)
注意我目前正在阅读这个,我不相信这是“最狂野或最棒的”方式 - 也许我可以利用转换器和漂亮的打印,如果做不同的?代码示例将不胜感激。
def serviceURL = new URL(theURL)
def json = new JSONObject(serviceURL.text)
println json
答案 0 :(得分:14)
您可以使用toString(int indentFactor)
方法打印JSON。例如:
def json = new JSONObject()
json.put('foo', 'bar')
json.put('blat', 'greep')
println json
===>{"foo":"bar","blat","greep"}
println json.toString(4)
===>{
"foo": "bar",
"blat": "greep"
}
答案 1 :(得分:5)
您可以使用grails.converters.JSON(这是JSON最常用的库):
在config.groovy文件中,添加行以将prettyPrint设置为true:
grails.converters.default.pretty.print=true
然后,在你的控制器中:
import grails.converters.*
def serviceURL = new URL(theURL)
def json = JSON.parse(serviceURL.text)
println "JSON RESPONSE: ${json.toString()"
答案 2 :(得分:4)
如果您在Grails控制器中并计划渲染json,那么您使用类似的东西(使用Grails 2.3.5):
public prettyJson() {
JSON json = ['status': 'OK'] as JSON
json.prettyPrint = true
json.render response
}
我在这里找到了解决方案:http://www.intelligrape.com/blog/2012/07/16/rendering-json-with-formatting/
答案 3 :(得分:0)
除了在}
中设置默认的漂亮打印外,JSON的toString()方法接受一个布尔参数。它控制是否打印结果。
commentString.replace(/\{firstname\}/g, '{firstname_C}')
在Grails 1.3.9中测试。