SyntaxError: Expected property name or ‘}‘ in JSON at position 2 (line 1 column 3) at JSON.parse

从数据格式来讲,我们获取到的是一个 HTML 转义过的 JSON 字符串。HTML 转义会将一些特殊
字符(例如 " 和 <)转义为其 HTML 实体形式,如 &quot;(代表 ")和 &gt;(代表 >)。
在 JSON 字符串中,&quot; 和 &gt; 需要转换回其原始字符,才能正确解析。

所以解决办法我们可以通过下面的步骤进行解决:

1. 将 HTML 实体转换为普通字符

需要先将转义的 JSON 字符串恢复成标准 JSON 格式。可以使用一个简单的 HTML 解码工具或函数来做到这一点。

在 JavaScript 中,可以使用以下方法将 HTML 实体转换为普通字符:

function decodeHtmlEntities(str) {
  const txt = document.createElement("textarea");
  txt.innerHTML = str;
  return txt.value;
}


 

2. 使用解码后的字符串进行 JSON.parse

将解码后的字符串传递给 JSON.parse 来解析 JSON 数据。

// 假设这是你需要转义的 JSON 字符串
const escapedString = '[{&quot;BUILDYEAR&quot;:&quot;null-&gt;2020&quot;,&quot;ID&quot;:&quot;null-&gt;1dfdbbdb49315fa4ef6d766e96bd1b9e&quot;}';

// 解码 HTML 实体
const jsonString = decodeHtmlEntities(escapedString);

// 解析 JSON
try {
  const data = JSON.parse(jsonString);
  console.log(data,"需要得到的转译后的数据格式");
} catch (error) {
  console.error('JSON parsing error:', error);
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值