如何提取Amazon Polly返回visemes文本文件的time和value值并解决JSON.parse报错
问题解决:Amazon Polly visemes返回数据解析报错
错误原因
- Amazon Polly返回的visemes结果为JSON Lines格式:每行是一个独立JSON对象,整体未被数组方括号包裹、行之间无逗号分隔,直接调用
JSON.parse()解析整段文本必然触发语法错误 - 你未做解析就直接对字符串类型的返回值
out按下标取属性out[i]['@value'],out[i]取到的是字符串的第i个字符,自然会报undefined、输出单个引号
修复代码
fetch(url) .then(res => res.text()) .then((out) => { // 按换行拆分返回内容,过滤空行 const lineList = out.trim().split(/\n/).filter(line => !!line.trim()) // 逐行解析为JSON对象 const visemeData = lineList.map(line => JSON.parse(line.trim())) // 遍历提取所需字段 visemeData.forEach((item, idx) => { console.log(`索引${idx}:time=${item.time},value=${item.value}`) }) }) .catch(error => console.error('处理失败:', error))
附加说明
- 若返回内容开头存在非JSON格式的头标识,可先跳过对应行数再做解析
- 从你提供的截图可见返回字段为
time和value,无需额外加@前缀
相关截图


内容的提问来源于stack exchange,提问作者Chris Young
相关产品推荐
相关产品推荐

