Groovy 1.8中的超炫JSON支持

Groovy 1.8发布新闻中,提到Groovy增加了对JSON的支持。Dustin Marx在其博文中,讲述了这一功能的使用。

用法真的很简单,创建一个JSON对象:

import groovy.json.JsonBuilder
def json = new JsonBuilder()
json.state{
   capital "Denver"
   majorCities "Denver", "Colorado Springs", "Fort Collins"
}
println json

看看结果!是不是很简单!在Debug的时候,查看一个n长的JSON字符串是件很痛苦的事情。不用担心,Groovy已经想到了!它提供了JsonOutput.prettyPrint(String)方法,直接以树型输出JSON字符串:

import groovy.json.JsonOutput
//JsonBuilder也有类似的方法,JsonBuilder.toPrettyString(),效果相同
println JsonOutput.prettyPrint(json.toString())

是不是可读性很好?

凡是用过XmlSlurper的人都会被它解析XML文件的方便性所吸引,对于JSON文件,Groovy同样提供了一个解析器:JsonSlurper,用法如下:

//states.js
{
    "state": {
        "capital": "Denver",
        "majorCities": [
            "Denver",
            "Colorado Springs",
            "Fort Collins"
        ]
    }
}

//解析代码
import groovy.json.JsonSlurper
def jsonPayload = new File("states.js").text
def slurper = new JsonSlurper()
def states = slurper.parseText(jsonPayload)

之后可通过诸如:states.state或者states.state.name访问属性值。强强联合,果然与众不同!:)

关于示例中更多详细代码,请参见原文

By huwh - Posted on 24 五月 2011

跟grails的JsonBuilder有关系么?

 跟grails的JsonBuilder有关系么?

既有关系,也没关系。

从API上来讲,没有关系。但不能说没有受Grails的影响。Groovy中的有些特性本身就是受其周围工具影响的结果。如Expando,我记得最早是Grails中先有,然后被Groovy接纳。Power Assert,最早是出现在Spock中,后来又成为Groovy的特性。

所以说是:既有关系,也没关系。

难道grails1.4的jsonbuilder又要换了?

 难道grails1.4的jsonbuilder又要换了?