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

WSO2 MI 410中csvModule转JSON到CSV报错的替代方案求助

解决WSO2 MI csvModule转换单个JSON对象为CSV的报错问题

WSO2 MI的csvModule默认要求输入是JSON数组(因为CSV是多行数据结构,数组中的每个对象对应一行),所以直接传入单个JSON对象(如{"Name": "ABC","Age":25})会触发not a valid Json Array错误。以下是两种可行的替代方案:

方案一:用PayloadFactory自动包装为单元素数组

这种方式不需要手动修改原始输入,在 mediation flow 中自动将单个对象包装成数组,再交给csvModule处理,最终输出的CSV依然是预期的单行结构:

<!-- 先将单个JSON对象包装为数组 -->
<payloadFactory media-type="json">
    <format>[$1]</format>
    <args>
        <arg evaluator="json" expression="$."/>
    </args>
</payloadFactory>

<!-- 执行CSV转换 -->
<csv separator="," quoteChar="&quot;">
    <property name="header" value="true"/>
</csv>

方案二:用Script Mediator手动生成CSV

如果不想依赖csvModule的数组要求,可以用脚本直接构建CSV内容,以JavaScript为例:

<script language="js"><![CDATA[
    // 获取JSON payload
    var payload = mc.getPayloadJSON();
    // 提取表头和值
    var headers = Object.keys(payload).join(',');
    var values = Object.values(payload).map(function(val) {
        // 字符串类型值添加引号,避免包含分隔符时出错
        return typeof val === 'string' ? '"' + val + '"' : val;
    }).join(',');
    // 设置CSV payload并指定媒体类型
    mc.setPayloadXML(<text>{headers}\n{values}</text>);
    mc.setProperty('messageType', 'text/csv');
]]></script>

两种方案都能得到你期望的CSV输出:

Name,Age
ABC,25

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:40:30