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

如何在JOLT Spec中将childId移入payload.*.content.values?

问题

需要将childId移入payload.*.content.values中,具体需求如下:
现有JOLT转换规则,输入JSON包含request对象及多个account对象,当前输出中childId位于payload根节点,期望将其改为每个payload下account节点的content.values中的cOnlineId字段。

现有JOLT Spec

[
  {
    "operation": "shift",
    "spec": {
      // set values of the object keys to their accountIds
      // while taking out the value of request.body.inputAccountId
      "*": {
        "request": {
          "body": {
            "inputId": "inputId",
            "service": "sName"
          }
        },
        "*": {
          "@": "@2,accountId.&"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@2,&": {
          "familyRole": {
            "//": "Comment: Based on Family role get the details, familyRole1=Organizer, familyRole2=Guardian, familyRole3=child",
            "1|2": {
              "@(2,accountId)": "payload.@(3,accountId).accountId",
              "@(2,locale)": "payload.@(3,accountId).content.locale",
              "@(2,onlineId)": "payload.@(3,accountId).content.values.onlineId",
              "@(2,emailAddresses)": {
                "*": {
                  "isMain": {
                    "true": {
                      "@(2,address)": "payload.@(7,accountId).destination.emailAddress"
                    }
                  }
                }
              },
              "@(5,sName)": "payload.@(3,accountId).content.values.sName"
            }
          }
        }
      },
      "inputId": {
        "*": {
          "@2,&": {
            "onlineId": "..payload.childId"
          }
        }
      }
    }
  }
]

输入JSON

[
  {
    "request": {
      "body": {
        "inputId": "2211",
        "service": "trial"
      }
    }
  },
  {
    "accountId": "1234",
    "role": 1,
    "gender": "f",
    "signinId": "aa@aa.com",
    "onlineId": "one"
  },
  {
    "accountId": "1122",
    "role": 2,
    "gender": "f",
    "signinId": "bb@aa.com",
    "onlineId": "two"
  },
  {
    "accountId": "2211",
    "role": 3,
    "gender": "f",
    "signinId": "cc@aa.com",
    "onlineId": "three"
  }
]

当前输出

{
  "payload" : {
    "childId" : "three",
    "1234" : {
      "accountId" : "1234",
      "content" : {
        "values" : {
          "onlineId" : "one",
          "sName" : "trial"
        }
      }
    },
    "1122" : {
      "accountId" : "1122",
      "content" : {
        "values" : {
          "onlineId" : "two",
          "sName" : "trial"
        }
      }
    }
  }
}

期望输出

{
  "payload" : {
    "1234" : {
      "accountId" : "1234",
      "content" : {
        "values" : {
          "onlineId" : "one",
          "cOnlineId" : "three",
          "sName" : "trial"
        }
      }
    },
    "1122" : {
      "accountId" : "1122",
      "content" : {
        "values" : {
          "onlineId" : "two",
          "cOnlineId" : "three",
          "sName" : "trial"
        }
      }
    }
  }
}

解决方案

修改后的JOLT Spec如下:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "request": {
          "body": {
            "inputId": "inputId",
            "service": "sName"
          }
        },
        "*": {
          "@": "@2,accountId.&"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@2,&": {
          "role": {
            "1|2": {
              "@(2,accountId)": "payload.@(3,accountId).accountId",
              "@(2,onlineId)": "payload.@(3,accountId).content.values.onlineId",
              "@(5,sName)": "payload.@(3,accountId).content.values.sName",
              "@(4,2211.onlineId)": "payload.@(3,accountId).content.values.cOnlineId"
            }
          }
        }
      },
      "inputId": null
    }
  }
]

关键修改说明

  1. 移除根节点childId生成逻辑:将原inputId对应的规则设为null,避免payload根节点出现childId字段。
  2. 复用child的onlineId值:在处理role为1、2的账号时,通过@(4,2211.onlineId)直接引用accountId为2211的账号的onlineId,将其赋值给每个目标账号的content.values.cOnlineId。
  3. 匹配输入字段名:原规则中使用的familyRole与输入里的role字段不匹配,调整为"role"以正确识别角色信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:10:01