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

使用Clipboard API复制JsonTree类型设置报错,求可行解决方案

解决直接复制JsonTree到剪贴板的类型错误问题

你遇到的错误是因为navigator.clipboard.write()要求传入ClipboardItem[]类型的参数,但你直接传入了原始JSON对象,类型不匹配导致报错。要原样复制JsonTree结构,可通过以下两种方法实现:

方法一:使用writeText简化文本写入

这是最常用的方式,先将JSON对象序列化为格式化字符串,写入剪贴板后,粘贴时再解析回对象:

// 序列化JSON对象为带缩进的字符串,保留格式
const settingsStr = JSON.stringify(settings, null, 2);
// 写入剪贴板(需在异步函数中使用await)
await navigator.clipboard.writeText(settingsStr);

粘贴时还原:

// 读取剪贴板文本
const clipboardStr = await navigator.clipboard.readText();
// 解析回原始JSON对象
const restoredSettings = JSON.parse(clipboardStr);

方法二:使用ClipboardItem写入JSON类型数据

如果需要明确标记剪贴板内容为JSON类型(方便其他应用识别),可以创建Blob并包装成ClipboardItem:

const settingsStr = JSON.stringify(settings, null, 2);
// 创建JSON类型的Blob
const jsonBlob = new Blob([settingsStr], { type: 'application/json' });
// 包装为ClipboardItem
const clipboardItem = new ClipboardItem({ 'application/json': jsonBlob });
// 写入剪贴板
await navigator.clipboard.write([clipboardItem]);

粘贴时读取JSON类型数据:

const clipboardItems = await navigator.clipboard.read();
for (const item of clipboardItems) {
  if (item.types.includes('application/json')) {
    const blob = await item.getType('application/json');
    const settingsStr = await blob.text();
    const restoredSettings = JSON.parse(settingsStr);
    // 处理还原后的对象
    break;
  }
}

注意事项

  • 剪贴板API仅支持HTTPS环境或localhost,需确保运行环境符合要求;
  • 所有剪贴板操作都是异步的,需在异步函数中使用await,或通过.then()处理Promise。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:05:25