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

在WSO2 API Manager 4.1.0中修改JSON负载字段名并移除字段

在WSO2 API Manager 4.1.0中实现JSON响应字段过滤与驼峰式重命名

你可以通过WSO2 APIM内置的中介Mediator功能实现需求,以下是两种可行方案:


方案1:使用Payload Factory Mediator(固定结构场景)

适合响应结构固定的情况,通过构造新的JSON payload直接过滤并重命名字段。

配置代码(添加到API的Out Sequence中)

<!-- 先清理原有payload,仅保留result数组并转换字段名 -->
<payloadFactory media-type="json">
    <format>
        {
            "result": [
                {
                    "identificadorImovel": $1,
                    "codigoImovel": "$2",
                    "codigoVersao": "$3",
                    "tipoOrigem": "$4",
                    "protocolo": "$5",
                    "dataUltimoProtocolo": "$6",
                    "statusImovel": "$7",
                    "tipoImovel": "$8"
                }
            ]
        }
    </format>
    <args>
        <arg evaluator="json" expression="$body.result[0].imovel_identificador_imovel"/>
        <arg evaluator="json" expression="$body.result[0].imovel_codigo_imovel"/>
        <arg evaluator="json" expression="$body.result[0].imovel_codigo_versao"/>
        <arg evaluator="json" expression="$body.result[0].imovel_tipo_origem"/>
        <arg evaluator="json" expression="$body.result[0].imovel_protocolo"/>
        <arg evaluator="json" expression="$body.result[0].imovel_data_ultimo_protocolo"/>
        <arg evaluator="json" expression="$body.result[0].imovel_status_imovel"/>
        <arg evaluator="json" expression="$body.result[0].imovel_tipo_imovel"/>
    </args>
</payloadFactory>

如果result包含多个元素,需要结合Iterate+Aggregate Mediator批量处理:

<!-- 遍历result数组 -->
<iterate expression="$body.result" id="resultIterator" sequential="true">
    <target>
        <sequence>
            <!-- 转换单个元素的字段名 -->
            <payloadFactory media-type="json">
                <format>
                    {
                        "identificadorImovel": $1,
                        "codigoImovel": "$2",
                        "codigoVersao": "$3",
                        "tipoOrigem": "$4",
                        "protocolo": "$5",
                        "dataUltimoProtocolo": "$6",
                        "statusImovel": "$7",
                        "tipoImovel": "$8"
                    }
                </format>
                <args>
                    <arg evaluator="json" expression="$body.imovel_identificador_imovel"/>
                    <arg evaluator="json" expression="$body.imovel_codigo_imovel"/>
                    <arg evaluator="json" expression="$body.imovel_codigo_versao"/>
                    <arg evaluator="json" expression="$body.imovel_tipo_origem"/>
                    <arg evaluator="json" expression="$body.imovel_protocolo"/>
                    <arg evaluator="json" expression="$body.imovel_data_ultimo_protocolo"/>
                    <arg evaluator="json" expression="$body.imovel_status_imovel"/>
                    <arg evaluator="json" expression="$body.imovel_tipo_imovel"/>
                </args>
            </payloadFactory>
        </sequence>
    </target>
</iterate>

<!-- 聚合转换后的元素,重新组装成result数组 -->
<aggregate id="resultIterator">
    <completeCondition>
        <messageCount max="-1" min="-1"/>
    </completeCondition>
    <onComplete expression="$body">
        <payloadFactory media-type="json">
            <format>{"result": $1}</format>
            <arg evaluator="json" expression="$body"/>
        </payloadFactory>
    </onComplete>
</aggregate>

方案2:使用Script Mediator(动态场景)

适合需要处理动态数量元素或更灵活逻辑的情况,通过JavaScript脚本实现转换。

配置代码(添加到API的Out Sequence中)

<script language="js">
    // 获取原响应的JSON payload
    var payload = mc.getPayloadJSON();
    var transformedItems = [];

    // 遍历result数组,逐个转换字段名
    payload.result.forEach(function(item) {
        var transformedItem = {
            identificadorImovel: item.imovel_identificador_imovel,
            codigoImovel: item.imovel_codigo_imovel,
            codigoVersao: item.imovel_codigo_versao,
            tipoOrigem: item.imovel_tipo_origem,
            protocolo: item.imovel_protocolo,
            dataUltimoProtocolo: item.imovel_data_ultimo_protocolo,
            statusImovel: item.imovel_status_imovel,
            tipoImovel: item.imovel_tipo_imovel
        };
        transformedItems.push(transformedItem);
    });

    // 设置转换后的新payload
    mc.setPayloadJSON({ result: transformedItems });
</script>

配置步骤

  1. 登录WSO2 APIM管理控制台,进入目标API的编辑页面
  2. 切换到Message Mediation标签,选择Out Sequence
  3. 将上述中介代码添加到Out Sequence的Send mediator之前
  4. 保存并重新发布API,调用后即可验证转换后的响应格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:37:36