JSON.stringify的replacer回调函数如何配置同时修改多个键的返回值
解决方案
你可以直接在JSON.stringify的替换回调函数中扩展条件判断,常用的两种实现方式如下:
写法1:分支判断(逻辑直观,适合少量键修改)
json = JSON.stringify(rabbit, (key, value) => { console.log(`key: ${key}, value: ${value}`); if (key === 'name') { return 'Ellie'; } else if (key === 'color') { return 'white'; // 此处替换为你要设置的color新值 } else { return value; } });
如果后续还要新增修改其他键,直接追加else if分支即可。
写法2:映射表匹配(扩展性强,适合多键批量修改)
如果需要修改的键数量较多,推荐提前定义替换映射表,后续调整修改规则只需要维护映射表即可,不需要修改回调逻辑:
// 替换映射表:键为要修改的对象属性名,值为对应的新值 const replaceRules = { name: 'Ellie', color: 'white', size: 'big' // 可以继续新增其他要修改的键值对 }; json = JSON.stringify(rabbit, (key, value) => { console.log(`key: ${key}, value: ${value}`); return replaceRules.hasOwnProperty(key) ? replaceRules[key] : value; });
注意:原示例中的
rabbit对象包含的函数属性jump会被JSON.stringify默认忽略,日期属性birthDate会被默认转换为ISO格式的字符串,如果你需要特殊处理这两类值,也可以在回调函数中补充对应判断逻辑。
内容的提问来源于stack exchange,提问作者Sung Hoon Kim
相关产品推荐
相关产品推荐

