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

如何用JavaScript修改JSON中Meeting.Output的comment字段并保留其余结构

原有代码问题

  • 第一层循环未正确索引数组元素:payload是数组类型,直接访问payload.Meeting会得到undefined,需要通过循环索引payload[i]访问当前遍历的对象
  • 内层循环变量名误用:将存储数组长度的数字变量reqArrLength当成数组本身取元素,必然触发报错,应该使用提前定义好的数组变量reqArr访问元素
  • 循环变量冲突:内外两层循环都使用var i作为遍历变量,var的变量提升特性会污染外层循环计数,导致逻辑完全混乱
  • 边界判断不严谨:仅判断null、空字符串、undefined不够,需要额外判断Meeting.Output是否为数组类型,避免后续调用length属性报错

可行实现方案

以下实现完全保留原有JSON结构,仅修改Meeting.Output数组内的comment字段,其余字段不做任何改动:

session.input.readAsJSON(function(readAsJSONError, payload) {
    // 先处理JSON读取错误,避免后续逻辑崩溃
    if (readAsJSONError) {
        console.error('JSON读取失败: ', readAsJSONError);
        return;
    }
    // 遍历外层数组
    for (let i = 0; i < payload.length; i++) {
        const currentObj = payload[i];
        // 安全校验:判断Meeting和Output是否存在,且Output为数组类型
        const outputArr = currentObj?.Meeting?.Output;
        if (!Array.isArray(outputArr)) {
            console.log(`索引为${i}的对象无有效Meeting.Output数组,跳过处理`);
            continue;
        }
        // 遍历Output数组修改comment
        for (let j = 0; j < outputArr.length; j++) {
            const outputItem = outputArr[j];
            // 仅当comment字段存在时调用自定义方法修改
            if (outputItem.hasOwnProperty('comment')) {
                outputItem.comment = callsomefunction(outputItem.comment);
            }
        }
    }
    // 处理完成后可直接输出payload,例如:
    // session.output.write(payload);
});

如果需要保留原输入payload不被修改,可在处理前对payload做深拷贝,后续遍历拷贝后的对象即可:

const processedPayload = JSON.parse(JSON.stringify(payload));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:48:03