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

如何使用jQuery将字符串转换为JSON对象?JSON.parse报错解决方案

JSON.parse 抛出 Unexpected token ' in JSON at position 1 错误的解决方案

错误根因

报错是因为你传入JSON.parse()的字符串不符合标准JSON语法规范:
标准JSON有强制语法要求:

  • 所有对象的键、字符串类型的值必须用双引号"包裹,不允许使用单引号'
  • 你当前传入的字符串全部用单引号包裹键和字符串值,本质是JS对象字面量的字符串表示,不是合法JSON,解析器读取到第一个单引号时就会抛出语法错误。

不管是原生JSON.parse()还是jQuery提供的$.parseJSON()方法,都只接受符合标准规范的JSON字符串,传入非标准格式都会触发同类报错。

可行解决方法

根据你是否能控制源字符串的生成,选择对应方案:

方案1:可控源字符串时输出标准JSON(最优方案)

如果你是自己拼接字符串、或者可以协调后端接口返回格式,直接生成符合规范的双引号JSON字符串即可,示例:

// 合法JSON字符串示例
const str = `{"8": {"name": "breeze bedsheet ", "price": 1150, "qty": 1, "strid": "8", "image": "images/download_1.jpg"}, "10": {"name": "neat and clean bedsheet ", "price": 1150, "qty": 2, "strid": "10", "image": "images/images_2.jpg"}}`;
const obj = JSON.parse(str); // 正常解析无报错

方案2:无法修改源字符串时的转换方案

如果你只能拿到现有单引号格式的字符串,可根据场景选以下两种方式:

  • 安全场景下的快速方案:eval转换
    仅在字符串100%可信、无用户输入/第三方恶意内容的场景下使用,否则会存在代码注入风险:
    const str = "{'8': {'name': 'breeze bedsheet ', 'price': 1150, 'qty': 1, 'strid': '8', 'image': 'images/download_1.jpg'}, '10': {'name': 'neat and clean bedsheet ', 'price': 1150, 'qty': 2, 'strid': '10', 'image': 'images/images_2.jpg'}}";
    const obj = eval(`(${str})`);
    
  • 通用安全方案:格式修正后再解析
    先把字符串中用于包裹键值的单引号替换为双引号,转为合法JSON后再调用JSON.parse(),如果字符串内容本身包含单引号,需要额外写转义逻辑避免替换异常,简单场景示例:
    const str = "{'8': {'name': 'breeze bedsheet ', 'price': 1150, 'qty': 1, 'strid': '8', 'image': 'images/download_1.jpg'}, '10': {'name': 'neat and clean bedsheet ', 'price': 1150, 'qty': 2, 'strid': '10', 'image': 'images/images_2.jpg'}}";
    const validJsonStr = str.replace(/'/g, '"');
    const obj = JSON.parse(validJsonStr);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:24:21