【问题标题】:modifying json with jsonbuilder in Groovy在 Groovy 中使用 jsonbuilder 修改 json
【发布时间】:2014-11-03 02:01:15
【问题描述】:

我正在尝试修改 json 的内容,然后打印它以查看它是否已随此代码更改但出现错误

 def builder = new JsonBuilder(request)
 log.info(builder.content)
 builder.content.device.dpidsha1= 'abcd'  
 log.info(builder.toPrettyString())

错误:

no such property: device

json 看起来像这样:

{
   "app":{ },
   "at":2,
   "badv":[ ],
   "bcat":[ ],
   "device":{
      "carrier":"310-410",
      "connectiontype":3,
      "devicetype":1,
      "dnt":0,
      "dpidmd5":"268d403db34e32c45869bb1401247af9",
      "dpidsha1":"1234",
.
.
}

有人可以帮助了解我做错了什么以及如何纠正它。

【问题讨论】:

    标签: json groovy jsonbuilder


    【解决方案1】:

    你需要解析传入的内容,修改为JsonBuilder

    import groovy.json.JsonBuilder
    import groovy.json.JsonSlurper
    
    def content = """
    {
       "app":{ },
       "at":2,
       "badv":[ ],
       "bcat":[ ],
       "device":{
          "carrier":"310-410",
          "connectiontype":3,
          "devicetype":1,
          "dnt":0,
          "dpidmd5":"268d403db34e32c45869bb1401247af9",
          "dpidsha1":"1234" 
       }
    }"""
    
    def slurped = new JsonSlurper().parseText(content)
    def builder = new JsonBuilder(slurped)
    builder.content.device.dpidsha1 = 'abcd'  
    println(builder.toPrettyString())
    

    【讨论】:

    • 谢谢!不管这意味着什么:)
    • @Opal: 我之前不知道toPrettyString() :)
    • 啊......你是对的 - 所以我也会投票赞成这个问题;)
    • 已更正@mmigdol。谢谢!不确定 groovy 的解析器行为在这里是否正确。它应该会因此类错误而失败:/
    • 不幸的是,它无法在 groovy 2.1.6 中解析这个没有大括号的 JSON,但在 2.3.6 中可以正常工作:/
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多