如何在groovy中修改JSON

use*_*415 2 groovy json jsonbuilder

我使用JsonBuilder来构建JSONObject/String.

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

我没有看到使用JsonBuilder执行此操作的可能性.我用什么节目呢?

tim*_*tes 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}]}'
Run Code Online (Sandbox Code Playgroud)

但是,由于content没有从Object显式导出,我称之为副作用,并且不会依赖它在未来版本的Groovy中工作.

最好在将映射传递给映射之前使映射正确JsonBuilder,或者如果不可能,我猜你需要解析Json字符串,JsonSlurper修改生成的Map,然后JsonBuilder再次重建Json .