2013-11-20 70 views
2

我使用JsonBuilder构建JSONObject/String。如何修改groovy中的JSON

但是,如何更新/更改此JSONObject /字符串中的一个字段的值?

我没有看到使用JsonBuilder做这件事的可能性。那我用了什么?

+1

[JsonSlurper](http://groovy.codehaus.org/gapi/groovy/json/JsonSlurper.html)? –

+0

这将只返回一张地图。你的意思是更新地图并将其转换回json? – user1947415

+0

是的。 JsonSlurper将json读入地图。改变它,然后使用JsonBuilder将修改后的地图写回json –

回答

6

如果改变你已经投入JsonBuilder的内容,那么你可以做:

import groovy.json.* 

def map = [ users:[ [ name:'tim', posts:43 ], [ name:'alice', posts:72 ] ] ] 

JsonBuilder builder = new JsonBuilder(map) 

builder.content.users[ 0 ].name = 'dave' 

assert builder.toString() == '{"users":[{"name":"dave","posts":43},{"name":"alice","posts":72}]}' 

但由于content未明确从出口对象,我会打电话给这一侧并且不会依赖它在未来版本的Groovy中工作。

更好地得到您的地图,你把它传递给JsonBuilder权利之前,或者如果这是不可能的我想你需要重新解析JSON字符串JsonSlurper修改生成的地图,然后重建的Json与JsonBuilder