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

JOLT规格适配修改:兼容Photos数组空值与多值场景

问题解决:兼容Photos数组空/单值/多值的JOLT规格调整

问题背景

现有JOLT规格在处理输入JSON的Photos数组多值时可正常转换,但当Photos数组为空时,第二个shift操作无法将card节点下的Id1、val等字段映射到输出的Photos数组,导致字段丢失。需要修改规格,同时兼容三种场景。

输入示例(Photos为空)

{"Entity":{"card":{"cardNo":"123456789","status":"10","cardAddress":"UK","cardAddress1":"US","cardCity":"mk","name":"RAM","lastName":"ABU","Id1":23452540,"val":"uu"},"Photos":[]}}

期望输出

{"tab":{"text":"123456789"},"address":[{"add":"UK","add2":"US","mk":"mk"}],"status":"10","Photos":[{"no":"23452540","caption2":"uu"}]}

原JOLT规格问题

原第二个shift操作仅能处理Photos下no/caption2为数组的情况(对应原Photos多值),当原Photos为空时,这两个字段是单个值,无法匹配到Photos.*.*的路径,导致Photos字段丢失。


修改后的JOLT规格

[
  {
    "operation": "shift",
    "spec": {
      "Entity": {
        "card": {
          "cardNo": "tab.text",
          "status": "status",
          "cardAddress": "address[0].add",
          "cardAddress1": "address[0].add2",
          "cardC*": "address[0].mk",
          "Id1": "Photos.no",
          "val": "Photos.caption2",
          "bd2": "Photos.no",
          "bal": "Photos.caption2",
          "cf3": "Photos.no",
          "mal": "Photos.caption2",
          "lt4": "Photos.no",
          "tal": "Photos.caption2"
        },
        "Photos": {
          "*": {
            "Id": "Photos.no",
            "Caption": "Photos.caption2"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "tab": "&",
      "address": "&",
      "status": "&",
      "Photos": {
        "no": {
          "*": {
            "@": "&3[&1].no"
          },
          "@": "&2[0].no"
        },
        "caption2": {
          "*": {
            "@": "&3[&1].caption2"
          },
          "@": "&2[0].caption2"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Photos": {
        "*": {
          "no": "=toString"
        }
      }
    }
  }
]

修改说明

  1. 第一个shift操作:保持原有逻辑,完成基础字段映射,包括将原Photos数组元素的Id/Caption映射为Photos下的no/caption2数组,以及card节点的Id1/val映射为Photos下的no/caption2单个值。
  2. 第二个shift操作:针对no和caption2字段分别处理两种场景:
    • 若字段为数组(原Photos多值):遍历数组索引,将值映射到Photos[索引].字段名,生成数组元素结构。
    • 若字段为单个值(原Photos为空):将值直接映射到Photos[0].字段名,把单个对象包装成数组。
  3. 第三个modify操作:保持原有逻辑,将Photos数组中每个元素的no字段转为字符串类型。

此修改后,规格可兼容Photos数组为空、单值、多值的所有场景,生成符合要求的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:00:50