How to modify JSON in groovy

2019-07-15 14:42发布

I use JsonBuilder to build a JSONObject/String.

But, how can I update/change value of one field in this JSONObject/String?

I am not seeing the possibility of doing this using JsonBuilder. What show I use then?

1条回答
放荡不羁爱自由
2楼-- · 2019-07-15 15:19

If you have to change the content you already put into the JsonBuilder, then you could do:

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}]}'

But as content is not explicitly exported from the Object, I'd call this a side-effect and would not rely on it working in future versions of Groovy.

Better to get your map right before you pass it to JsonBuilder, or if that isn't possible I guess you'll need to parse the Json string with JsonSlurper modify the resulting Map and then rebuild the Json with JsonBuilder again.

查看更多
登录 后发表回答