You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Crafter中Groovy如何修改代码将Strategy类型字段输出为目标数组格式

解决方案

问题根因

你原有代码直接批量取players_o下所有子项的first_name_s/last_name_s字段,得到的是字段值的数组,直接赋值给元素文本会自动转为带[]的字符串格式,且无法生成嵌套结构。

修改方案

完全替换原有Line A、Line B的代码,改为遍历players_o的子项逐个构造嵌套结构,修改后完整代码如下:

private createStrategyElement(rootStrategy, ctx) {
    Element strategy = new DefaultElement("strategy")
    // 构造players外层数组节点
    Element playersNode = new DefaultElement("players")
    // 构造item内层数组节点
    Element itemListNode = new DefaultElement("item")

    // 非空判断后遍历所有player子项
    if (rootStrategy.players_o?.item) {
        rootStrategy.players_o.item.each { singlePlayerItem ->
            def playerComp = singlePlayerItem.component
            // 构造单个player对象节点
            Element singlePlayerNode = new DefaultElement("")
            singlePlayerNode.addElement("first_name_s").text = playerComp?.first_name_s ?: ""
            singlePlayerNode.addElement("last_name_s").text = playerComp?.last_name_s ?: ""
            itemListNode.add(singlePlayerNode)
        }
    }

    playersNode.add(itemListNode)
    strategy.add(playersNode)
    return strategy
}

说明

  • 代码中使用Groovy语法糖?.安全取值、?:简化空值默认赋值,替换原有冗余的三元判断
  • 遍历每个player子项单独构造对象节点,再统一塞入item数组,序列化输出后即可匹配你需要的嵌套JSON结构

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:15:02