可以在Grails1.3.7中漂亮地打印JSON吗?

可以在Grails1.3.7中漂亮地打印JSON吗?,json,grails,groovy,pretty-print,Json,Grails,Groovy,Pretty Print,所讨论的JSON是从RESTful服务读入的,我想将其打印出来(到控制台,尽管在.gsp中也可以),以便进行调试。Groovy 1.3.7(截至2011年8月的最新版本)使用Groovy 1.7.8(它没有1.8中引入的JsonOutput) 请注意,我现在是这样读的,我不认为这是“最Groove或grail est”的方式——如果做得不同,也许我可以利用转换器和漂亮的打印?代码样本将不胜感激 def serviceURL = new URL(theURL) def json = n

所讨论的JSON是从RESTful服务读入的,我想将其打印出来(到控制台,尽管在.gsp中也可以),以便进行调试。Groovy 1.3.7(截至2011年8月的最新版本)使用Groovy 1.7.8(它没有1.8中引入的JsonOutput)

请注意,我现在是这样读的,我不认为这是“最Groove或grail est”的方式——如果做得不同,也许我可以利用转换器和漂亮的打印?代码样本将不胜感激

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

您可以使用
toString(intindentfactor)
方法漂亮地打印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"
}

您可以使用grails.converts.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()"

如果您在Grails控制器中,并且计划呈现json,那么您可以使用类似的方式(使用Grails 2.3.5):


我在这里找到了解决方案:

除了在
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))
在Grails1.3.9中测试

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

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