Grails 1.3.7中是否可以漂亮地打印JSON?

8
所涉及的JSON是从RESTful服务中读取的,我想为了调试目的将其打印出来(在控制台上,尽管在.gsp中也可以)。截至2011年8月,Groovy 1.3.7(当前版本)使用Groovy 1.7.8(没有引入1.8中的JsonOutput)。
请注意,我目前是这样读取它的,但我不确定这是否是最优雅或最好的方式-也许如果以不同的方式完成,则可以利用转换器和漂亮的打印。代码示例将会被赞赏。
   def serviceURL = new URL(theURL)
   def json = new JSONObject(serviceURL.text)
   println json
4个回答

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

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

4

1
除了在 `Config.groovy` 中设置默认的 pretty print 外,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中进行测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接