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

请求修正Jolt转换规则,生成指定格式的URL列表

调整Jolt规则生成指定URL列表格式

问题说明

现有JSON输入包含特征列表和输入参数,当前Jolt转换规则生成的是嵌套数组形式的URL,无法得到预期的扁平化URL列表格式,需要调整规则实现目标输出。

输入数据

[
  {
    "domain-specific-features": {
      "features": [
        {
          "id": 3581,
          "name": "search-hello"
        },
        {
          "id": 3582,
          "name": "search-rmn"
        },
        {
          "id": 3864,
          "name": "search-email"
        },
        {
          "id": 3865,
          "name": "search-sr"
        },
        {
          "id": 3866,
          "name": "search-order"
        },
        {
          "id": 3867,
          "name": "search-disconnected-customer"
        },
        {
          "id": 3868,
          "name": "search-customer-id"
        },
        {
          "id": 3869,
          "name": "search-customer-number"
        }
      ]
    }
  },
  {
    "input": {
      "mobile-number": "1234567890",
      "pattern": "search"
    }
  }
]

当前使用的Jolt规则

[
    {
        "operation": "shift",
        "spec": {
            "*": {
                "domain-specific-features": {
                    "resultStatus": "resultStatus",
                    "features": {
                        "*": "mobility\\-callerId\\-featureList[].feature"
                    }
                },
                "input": "input"
            }
        }
    },
    {
        "operation": "shift",
        "spec": {
            "resultStatus": "resultStatus",
            "mobility\\-callerId\\-featureList": {
                "*": {
                    "@(2,input)": {
                        "mobile-number": "mobility\\-callerId\\-featureList[&2].mobileNumber",
                        "pattern": "mobility\\-callerId\\-featureList[&2].pattern"
                    },
                    "*": "mobility\\-callerId\\-featureList[&1].&"
                }
            }
        }
    },
    {
        "operation": "modify-overwrite-beta",
        "spec": {
            "mobility\\-call*rId\\-featureList": {
                "*": {
                    "fea*ure": {
                        "mobility\\-callerId\\-featureList\\-url": "=concat('/epsp-pattern/',@(2,pattern),'/',@(1,name),'?', 'mobile-number=', @(2,mobileNumber), '&appPatternFeatureId=', @(1,id))"
                    }
                }
            }
        }
    },
    {
        "operation": "shift",
        "spec": {
            "resultStatus": {
                "#NO_RECORD": "resultStatus.status",
                "#No records found": "resultStatus.message",
                "#7000": "resultStatus.code"
            },
            "mobility\\-callerId\\-featureList": {
                "*": {
                    "feature": {
                        "mobility\\-callerId\\-featureList\\-url": "mobility\\-callerId\\-featureList[&2].&"
                    }
                }
            }
        }
    }
]

预期输出

{
  "mobility-callerId-featureList" : ["/epsp-pattern/search/search-hello?mobile-number=1234567890&appPatternFeatureId=3581", "/epsp-pattern/search/search-rmn?mobile-number=1234567890&appPatternFeatureId=3582", "/epsp-pattern/search/search-email?mobile-number=1234567890&appPatternFeatureId=3864", "/epsp-pattern/search/search-sr?mobile-number=1234567890&appPatternFeatureId=3865", "/epsp-pattern/search/search-order?mobile-number=1234567890&appPatternFeatureId=3866", "/epsp-pattern/search/search-disconnected-customer?mobile-number=1234567890&appPatternFeatureId=3867", "/epsp-pattern/search/search-customer-id?mobile-number=1234567890&appPatternFeatureId=3868", "/epsp-pattern/search/search-customer-number?mobile-number=1234567890&appPatternFeatureId=3869"]
}

调整后的Jolt规则

[
  // 提取输入参数和特征列表到根节点,简化后续引用路径
  {
    "operation": "shift",
    "spec": {
      "0": {
        "domain-specific-features": {
          "features": "features"
        }
      },
      "1": {
        "input": "input"
      }
    }
  },
  // 为每个特征关联输入参数,构建临时结构
  {
    "operation": "shift",
    "spec": {
      "features": {
        "*": {
          "@(2,input.pattern)": "temp[&1].pattern",
          "@(2,input.mobile-number)": "temp[&1].mobileNumber",
          "id": "temp[&1].id",
          "name": "temp[&1].name"
        }
      }
    }
  },
  // 拼接每个特征对应的完整URL
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "temp": {
        "*": {
          "url": "=concat('/epsp-pattern/',@(1,pattern),'/',@(1,name),'?mobile-number=',@(1,mobileNumber),'&appPatternFeatureId=',@(1,id))"
        }
      }
    }
  },
  // 提取所有URL组成目标数组,丢弃临时结构
  {
    "operation": "shift",
    "spec": {
      "temp": {
        "*": {
          "url": "mobility-callerId-featureList[]"
        }
      }
    }
  }
]

规则说明

原规则的问题在于将URL嵌套在多层对象结构中,最终未能正确提取为扁平化数组元素。调整后的规则通过四步实现目标:

  1. 先把输入参数和特征列表提取到根节点,避免深层引用的复杂路径;
  2. 将每个特征与输入参数关联,生成包含所有必要字段的临时结构;
  3. 为每个临时结构拼接完整的URL字符串;
  4. 提取所有URL直接组成目标数组,得到预期的扁平化列表格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:20:01