SyntaxError:Expected property name or '}' in JSON at position 1 (line 1 column2)

1,109 阅读1分钟

上传本地txt文件

<Upload beforeUpload={getNavFile} maxCount={1}>
  <Button icon={<UploadOutlined />}></Button>
</Upload>

内容

{\"path\": {\"segment\": \"}}}

读取

const getOddFile = async (file) => {
    const str = await getUploadFile(file)
    try {
      const data = JSON.parse(str)
      const res = getnpFeatures(data.path)
      npFeatures.current = res
      message.success('导航数据截取成功!点击应用进行下一步操作')
    } catch (error) {
      message.error(`文件解析失败${error}`)
    }
}

  
export const getUploadFile = (file) => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.readAsText(file)
    reader.onload = () => {
      resolve(reader.result)
    }
    reader.onerror = reject
  })
} 

JSON.parse报错:

  1. 在浏览器控制台JSON.parse(str)正常解析
  2. 在线解析工具JSON在线解析 (juhe.cn)解析str也报错 解析前将转义字符串去掉,解析成功
  const data = JSON.parse(str.replace(/\\/g, ''))
  1. "面前加转义\是为了让"能嵌套,成功识别成字符串的引号
  2. 某些编译器和浏览器控制台能自动识别转义符号,放在项目里要手动去掉转义字符串