首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy的JsonBuilder创建了另外两个属性

Groovy的JsonBuilder创建了另外两个属性
EN

Stack Overflow用户
提问于 2017-09-10 19:03:01
回答 2查看 585关注 0票数 3

创建的JSON对象有两个附加属性:

  1. contentHash
  2. originalClassName

它们是自动添加的,我不想要。PFB代码

代码语言:javascript
复制
class Info{
    def summary
    def description
}

class Simple{
    def start
    def finish
    def status
}


def buildJson(def info, def simple)
{
    def jsonBuilder = new groovy.json.JsonBuilder()
    jsonBuilder(info: info, simple: simple)
    jsonBuilder.toPrettyString()

}

从上面的代码创建的Json -

代码语言:javascript
复制
{
    "info": {
        "contentHash": "a36cfa5d54ea40c843fff70e3e6e788e",
        "originalClassName": "Info",
        "summary":"Summary",
        "description": "Description"
    },
    "simple": [
        {
            "contentHash": "1aab6dd693268f65224940a03a51c25b",
            "start": "2017-09-10T08:54:05+0000",
            "originalClassName": "ExampleTest",
            "status": "PASS",
            "finish": "2017-09-10T08:54:16+0000"
        },
        {
            "contentHash": "1aab6dd693268f65224940a03a51c25b",
            "start": "2017-09-10T08:53:37+0000",
            "originalClassName": "ExampleTest",
            "status": "PASS",
            "finish": "2017-09-10T08:54:01+0000"
        }
    ]
}

我不想要这两个属性,我不知道为什么首先要添加这两个属性。有没有一种方法可以直接生成精确的JSONObject

EN

回答 2

Stack Overflow用户

发布于 2018-07-25 18:07:52

我在升级到groovy 2.4.12时遇到了这个问题。我通过定义对象类来解决这个问题。

你可以试试

代码语言:javascript
复制
 def info = new Object()
 info.metaClass.summary = "Info"
 info.metaClass.description = "Description"

 def simple = new Object()
 simple.metaClass.start = "start"
 simple.metaClass.finish = "finish"
 simple.metaClass.status = "status"

 def buildJson(def info, def simple)
 {
   def jsonBuilder = new groovy.json.JsonBuilder()
   jsonBuilder(info: info, simple: simple)
   println jsonBuilder.toPrettyString()
 }

这不包括元属性"originalClassName“和"contentHash”。

票数 1
EN

Stack Overflow用户

发布于 2022-10-28 14:36:11

指定默认生成器允许您排除这些字段--但是,在我看来,它们在默认情况下不被排除似乎很奇怪:

代码语言:javascript
复制
 def generator = new groovy.json.JsonGenerator.Options()
      .excludeFieldsByName('contentHash', 'originalClassName')
      .build()

 def builder = new JsonBuilder(jsonObject, generator)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46144492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档