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

Groovy脚本实现JSON指定字符串转整数的问题求助

问题描述

我有一个嵌套结构的JSON数据,需要将其中E1EDT13数组内各对象的NTANF、ISDD字段的字符串值转换为整数(去除双引号)。

输入JSON

{"DELVRY07": {"IDOC": {"@BEGIN": "1","EDI_DC40": {"@SEGMENT": "1"},"E1EDL20": {"@SEGMENT": "1","E1EDL21": {"@SEGMENT": "1"},"E1ADRM1": [{"@SEGMENT": "1"}],"E1EDT13": [{"@SEGMENT": "1","QUALF": "006","NTANF": "20230711","ISDD": "20230711"},{"@SEGMENT": "1","QUALF": "003","NTANF": "20230711"}]}}}

期望输出JSON

{"DELVRY07": {"IDOC": {"@BEGIN": "1","EDI_DC40": {"@SEGMENT": "1"},"E1EDL20": {"@SEGMENT": "1","E1EDL21": {"@SEGMENT": "1"},"E1ADRM1": [{"@SEGMENT": "1"}],"E1EDT13": [{"@SEGMENT": "1","QUALF": "006","NTANF": 20230711,"ISDD": 20230711},{"@SEGMENT": "1","QUALF": "003","NTANF": 20230711}]}}}

当前失效的Groovy脚本

def jsonSlurper = new JsonSlurper()
def list = jsonSlurper.parseText(body)
list['NTANF'] = Integer.parseInt(list['NTANF'])
list['ISDD'] = Integer.parseInt(list['ISDD'])
def jsonOP = JsonOutput.toJson(list)

问题原因

当前脚本直接操作顶层对象的NTANF和ISDD字段,但这两个字段实际嵌套在DELVRY07.IDOC.E1EDL20.E1EDT13数组的子对象里,顶层根本不存在这两个字段,所以脚本没有任何效果。

解决方案

需要先定位到嵌套的E1EDT13数组,遍历数组中的每个对象,对存在的目标字段进行类型转换(注意处理字段缺失的情况,避免空指针异常)。

修正后的Groovy脚本

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

def jsonSlurper = new JsonSlurper()
def data = jsonSlurper.parseText(body)

// 定位到E1EDT13数组
def e1edt13List = data.DELVRY07.IDOC.E1EDL20.E1EDT13

// 遍历数组中的每个对象
e1edt13List.each { item ->
    // 转换NTANF字段(如果存在)
    if (item.NTANF) {
        item.NTANF = item.NTANF.toInteger()
    }
    // 转换ISDD字段(如果存在)
    if (item.ISDD) {
        item.ISDD = item.ISDD.toInteger()
    }
}

def jsonOP = JsonOutput.toJson(data)
// 如需格式化输出,可替换为:def jsonOP = JsonOutput.prettyPrint(JsonOutput.toJson(data))

脚本说明

  1. 路径定位:通过data.DELVRY07.IDOC.E1EDL20.E1EDT13准确获取到目标数组
  2. 遍历处理:使用each遍历数组中的每个对象
  3. 安全转换:先判断字段是否存在,再调用Groovy内置的toInteger()方法完成类型转换,比Integer.parseInt()更简洁
  4. 输出控制:转换完成后用JsonOutput.toJson()生成最终JSON字符串,如需可读性更强的格式化输出,可使用JsonOutput.prettyPrint()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:52:47