如何将JS对象作为格式化JSON复制到剪贴板?
格式化JSON对象复制到剪贴板实现方案
方案1:沿用现有copy-to-clipboard库,无需更换工具
你得到紧凑无格式字符串的原因是JSON.stringify默认未开启格式化配置,补充该方法的后两个参数即可实现带缩进、换行的格式化效果:JSON.stringify完整语法为JSON.stringify(value, replacer, space):
- 第二个参数
replacer为替换规则,无特殊过滤/转换需求时传null即可 - 第三个参数
space为缩进空格数,传2或4即可生成符合阅读习惯的层级格式化JSON字符串
代码示例:
// 缩进使用2个空格,直接复制即可得到格式化效果 copy(JSON.stringify(copiedObj, null, 2))
如果需要和Chrome开发者工具copy object效果完全一致(支持尾逗号、兼容JS对象字面量格式),可以对生成的字符串做简单处理后再复制:
const formattedStr = JSON.stringify(copiedObj, null, 2).replace(/([^,])\n}/g, '$1,\n}') copy(formattedStr)
方案2:原生Clipboard API实现(无第三方依赖)
如果项目不想额外引入工具库,可直接使用浏览器原生剪贴板API实现相同功能:
async function copyFormattedObject(obj) { const formattedJson = JSON.stringify(obj, null, 2) try { await navigator.clipboard.writeText(formattedJson) } catch (err) { console.error('复制失败:', err) } } // 右键触发时直接调用即可 copyFormattedObject(copiedObj)
注意:原生Clipboard API需要页面运行在HTTPS环境(localhost本地开发不受限),且仅支持在用户交互事件(点击、右键菜单触发等)的回调中调用,刚好匹配你的使用场景。
内容的提问来源于stack exchange,提问作者Konstantink1
相关产品推荐
相关产品推荐

