【问题标题】:How to modify JSON in groovy如何在 groovy 中修改 JSON
【发布时间】:2013-12-04 23:16:25
【问题描述】:

我使用 JsonBuilder 构建 JSONObject/String。

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

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

【问题讨论】:

  • 那只会返回一张地图。您的意思是更新地图并转换回 json?
  • 是的。 JsonSlurper 将 json 读入地图。更改它,并使用 JsonBuilder 将修改后的映射写回 json
  • 是的,这行得通。但是,我更喜欢直接更改 JsonBuilder。 JsonBuilder 本身返回一个地图。但是,那张地图我只能得到一级属性。对于复杂的属性,我无法获得价值。
  • 所以你想在不解析字符串的情况下更改编码为 Json 字符串的地图的属性?

标签: json groovy jsonbuilder


【解决方案1】:

如果您必须更改已放入 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 没有从 Object 显式导出,我将其称为副作用,并且不会依赖它在未来版本的 Groovy 中工作。

最好在将地图传递给JsonBuilder 之前正确获取地图,否则我猜你需要使用JsonSlurper 解析Json 字符串修改生成的地图,然后使用重建Json再次JsonBuilder

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2017-11-09
    相关资源
    最近更新 更多