You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Groovy JsonBuilder生成指定JSON报错,求解决方案

解决Groovy JsonBuilder生成指定JSON的问题

首先看你碰到的错误:groovy.lang.MissingPropertyException: No such property: appendCricket for class: groovy.json.JsonBuilder,问题出在你在baleRun的闭包里错误地直接调用了builder.appendCricket,没用到JsonBuilder闭包内的DSL语法来构建嵌套结构,另外你还漏掉了目标JSON里的isOut字段。

下面是正确的代码实现:

import groovy.json.*

def builder = new JsonBuilder()
builder {
    isOut false  // 补上你之前遗漏的isOut字段
    baleRun {
        incData true
        // 直接在baleRun闭包里用DSL语法定义appendCricket数组
        appendCricket([
            {
                min 10
                max 32
                price "10"  // 注意和目标JSON的"10"保持一致,不是你之前写的"10000"
            }
        ])
    }
}

// 打印验证生成的JSON
println builder.toPrettyString()

关键修正说明:

  • 根节点用builder { ... }包裹,同时包含isOutbaleRun两个顶级字段
  • baleRun的闭包内,直接用appendCricket([...])的DSL写法——JsonBuilder的闭包内部会自动把方法调用转化为JSON键值对,不需要显式调用builder实例的方法
  • 调整了price的值,和你目标JSON的要求对齐

运行这段代码后,生成的JSON就是你需要的:

{
    "isOut": false,
    "baleRun": {
        "incData": true,
        "appendCricket": [
            {
                "min": 10,
                "max": 32,
                "price": "10"
            }
        ]
    }
}

内容的提问来源于stack exchange,提问作者avidCoder

火山引擎 最新活动