创建的JSON对象有两个附加属性:
contentHashoriginalClassName它们是自动添加的,我不想要。PFB代码
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 -
{
"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。
发布于 2018-07-25 18:07:52
我在升级到groovy 2.4.12时遇到了这个问题。我通过定义对象类来解决这个问题。
你可以试试
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”。
发布于 2022-10-28 14:36:11
指定默认生成器允许您排除这些字段--但是,在我看来,它们在默认情况下不被排除似乎很奇怪:
def generator = new groovy.json.JsonGenerator.Options()
.excludeFieldsByName('contentHash', 'originalClassName')
.build()
def builder = new JsonBuilder(jsonObject, generator)https://stackoverflow.com/questions/46144492
复制相似问题