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

使用Jolt转换含NULL值的嵌套JSON时的问题求助

Jolt嵌套JSON转换:NULL值丢失问题修复

问题分析

在处理复杂嵌套JSON的Jolt转换时,出现LatestEventDateTime等字段的NULL值丢失情况——例如EventDateTime数组仅生成3个元素,而预期应包含首个NULL值共4个元素。这是因为Jolt默认会自动过滤空值,导致数组长度与预期不符。

通用修复方案

要保留原始数据中的NULL值并保证数组结构符合预期,可通过以下几步调整Jolt规范:

1. 提前初始化数组占位

使用default操作符为目标数组初始化对应长度的NULL占位,确保元素数量与预期一致:

{
  "operation": "default",
  "spec": {
    "EventDateTime": [null, null, null, null],
    "LatestEventDateTime": [null, null, null, null]
  }
}

2. 映射原始数据并保留空值

在shift操作中,确保空值字段被正确映射,避免被自动过滤:

{
  "operation": "shift",
  "spec": {
    "yourNestedPath": {
      "*": {
        "EventDateTime": "EventDateTime[&1]",
        "LatestEventDateTime": "LatestEventDateTime[&1]"
      }
    }
  }
}

3. 强制保留空值(可选)

若仍存在空值被过滤的情况,可使用modify-overwrite-beta操作配合isNull函数强制保留:

{
  "operation": "modify-overwrite-beta",
  "spec": {
    "EventDateTime": {
      "*": "=isNull(@(1)) ? null : @(1)"
    },
    "LatestEventDateTime": {
      "*": "=isNull(@(1)) ? null : @(1)"
    }
  }
}

完整Jolt规范示例

将上述步骤组合,完整规范如下:

[
  // 初始化数组占位
  {
    "operation": "default",
    "spec": {
      "EventDateTime": [null, null, null, null],
      "LatestEventDateTime": [null, null, null, null]
    }
  },
  // 映射原始数据
  {
    "operation": "shift",
    "spec": {
      "events": {
        "*": {
          "EventDateTime": "EventDateTime[&1]",
          "LatestEventDateTime": "LatestEventDateTime[&1]"
        }
      }
    }
  },
  // 强制保留空值
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "EventDateTime": {
        "*": "=isNull(@(1)) ? null : @(1)"
      },
      "LatestEventDateTime": {
        "*": "=isNull(@(1)) ? null : @(1)"
      }
    }
  }
]

注意事项

  • 调整default中的数组长度以匹配预期输出的元素数量
  • 若你的嵌套路径与示例不同,需修改shift操作中的路径映射
  • 如果有具体的输入JSON和现有Jolt规范,可以提供更精准的定制化修正

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:38:15