2013-11-20 72 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