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

使用JSON.parse()解析字符串报错:SyntaxError: Unexpected token M如何解决?

为什么JSON.parse("MOODY'S NUMBER")会抛出SyntaxError?

这个问题的核心是你误解了JSON.parse()的作用——它不是用来解析普通字符串的,而是用来处理符合JSON语法规范的文本的。咱们一步步拆解原因和解决办法:

问题根源

JSON有非常严格的语法规则,其中两个关键点直接导致了你的报错:

  1. JSON里的字符串必须用双引号包裹,单引号是不被JSON标准认可的
  2. 传给JSON.parse()的参数必须是完整的JSON格式内容(比如"abc"是合法的JSON字符串,而abc本身不是)

再看你的两个调用场景:

  • JSON.parse("00145"):严格来说这也不是合法JSON,但部分JS引擎会做宽松处理,把它当作数字解析后转成字符串(不过更可能是你这里的表述有小误差——如果你的Value实际是'"00145"'这种带双引号的字符串,JSON.parse就能正确返回"00145")
  • JSON.parse("MOODY'S NUMBER"):解析器看到的第一个字符是M,既不是JSON允许的起始标记(双引号、{、[、数字、true/false/null),而且字符串里的单引号也违反了JSON规范,所以直接抛出SyntaxError。

解决方案

根据你的实际需求,有两种处理方式:

  • 如果Value本身就是普通业务字符串:完全不需要调用JSON.parse(),直接使用这个值即可。示例代码:
    const results = [{"Value": "00145"}, {"Value": "MOODY'S NUMBER"}];
    results.forEach(item => {
      const value = item.Value; // 直接使用,不需要parse
      console.log(value);
    });
    
  • 如果Value是序列化后的JSON字符串:确保它是合法的JSON格式再解析。比如要解析成字符串类型的JSON值,必须用双引号包裹,内部特殊字符要转义:
    // 合法的JSON格式字符串
    const validJsonStr = '"MOODY\'S NUMBER"';
    const parsedValue = JSON.parse(validJsonStr); // 正确返回 "MOODY'S NUMBER"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:02:34