Chrome扩展通知报错:message类型不匹配,如何展示后端数组数据?
解决Chrome通知无法正确展示Python后端返回的对象数组问题
chrome.notifications.create的message参数要求必须是字符串类型,直接传入对象数组或者调用默认的toString()方法,只会得到无意义的[object Object]——因为JavaScript对象的默认toString实现就是返回这个值。要正确展示后端数据,需要把对象数组转换成可读的字符串格式。
方案一:自定义格式化(推荐,更友好)
遍历后端返回的数组,将每个对象的属性提取出来,拼接成易读的文本:
// 假设从后端接口获取到的数据 const summaryData = await fetch('/get_summary').then(res => res.json()); // 格式化每个对象为字符串,多个对象用空行分隔 const formattedMessage = summaryData.map(item => { return `标题: ${item.Title} 作者: ${item.Author} 摘要: ${item.Sentences}`; }).join('\n\n'); // 创建通知 chrome.notifications.create({ type: 'basic', iconUrl: './icons/icon-48.png', // 替换为你的扩展图标路径 title: '最新摘要', message: formattedMessage });
方案二:JSON格式化(保留原始结构)
如果需要完整展示数据的结构,可以用JSON.stringify并添加缩进:
const summaryData = await fetch('/get_summary').then(res => res.json()); const formattedMessage = JSON.stringify(summaryData, null, 2); chrome.notifications.create({ type: 'basic', iconUrl: './icons/icon-48.png', title: '后端数据', message: formattedMessage });
额外注意
- 如果
Sentences字段本身是数组,还可以进一步处理,比如用item.Sentences.join('\n- ')转换成带列表的格式 - 确保扩展已申请
notifications权限,在manifest.json中添加:"permissions": ["notifications"]
内容的提问来源于stack exchange,提问作者asim san
相关产品推荐
相关产品推荐

