2011-08-24 51 views
8

JSON正在从RESTful服务读入,我想打印出来(为了控制,尽管在.gsp中也可以),用于调试目的。 Groovy 1.3.7(目前截至2011年8月)使用Groovy 1.7.8(它没有1.8中引入的JsonOutput)可以在Grails 1.3.7中打印JSON吗?

注意我目前正在阅读它,我不相信是'grooviest或最可靠的方式来做 - 也许我可以利用转换器和漂亮的打印,如果做得不同?代码示例将不胜感激。

def serviceURL = new URL(theURL) 
    def json = new JSONObject(serviceURL.text) 
    println json 

回答

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" 
} 
+0

哇,谢谢,很简单。 – Peter

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()" 
0

除了设置默认Config.groovy漂亮的打印,JSON的toString()方法接受一个布尔参数。它控制着是否打印结果。

import grails.converters.* 
import my.data.* 

def accountJson = Account.get(1001) as JSON 
println(accountJson.toString(true)) 
println(accountJson.toString(false)) 

Grails测试1.3.9。