2024.06.25 工作日常 通过JSON.parse()进行转换时发生报错

报错如下

SyntaxError: Expected property name or ‘}‘ in JsoN atposition 1
在这里插入图片描述

解决办法

  • 上面的报错原因在于: 在代码中通过JSON.parse()进行转换,发现如下图所示报错了。其实主要原因是单引号和双引号引起的问题。如果转义的字符串进行了赋值,那么上面一层代码会多了一层的转义。这里加2个JSON.parse()是因为,第一次转换的时候还是个字符串。我们要在json字符串前后手动加上双引号,然后在进行JSON.parse()的转换即可
JSON.parse(JSON.parse('"' + item.remark + '"'))
  • 另外,我们注意在使用 JSON.parse() 之前需要对目标字符串进行校验,是否为合格的JSON
function isJSON(str) {
  const regex = /^\s*[\{\[]/;
  return regex.test(str);
}

...

if(isJSON(str)) {
	const reault = JSON.parse(str)
}
### 防止 `JSON.parse` 报错的最佳实践 为了有效预防 `JSON.parse` 过程中的错误,建议采取以下措施: #### 1. 数据验证 在调用 `JSON.parse()` 方法之前,先对输入的数据进行严格校验。确保传入的是有效的 JSON 字符串格式[^2]。 ```javascript function isValidJson(str) { try { JSON.parse(str); return true; } catch (e) { console.error('Invalid JSON string:', str); return false; } } ``` #### 2. 完整性和结构检查 确认待解析的 JSON 文本具有完整的语法结构,特别是注意数组和对象是否正确闭合。任何未关闭的大括号 `{}` 或者方括号 `[]` 都可能导致解析失败。 #### 3. 使用容错机制 当捕获到异常,提供合理的默认值或执行替代逻辑,而不是让程序崩溃。这可以通过 JavaScript 的 `try...catch` 结构轻松实现。 ```javascript let parsedData; try { parsedData = JSON.parse(jsonString); } catch (error) { // 处理错误情况下的恢复策略 console.warn(`Failed to parse JSON: ${error.message}`); parsedData = {}; // 设置为空对象或其他安全初始状态 } ``` #### 4. 日志记录与调试支持 对于生产环境应用,在遇到不可预见的情况应记录详细的日志信息以便后续排查问题所在。同可以在开发阶段利用浏览器开发者工具查看具体的报错详情。 #### 5. 测试驱动开发(TDD) 编写单元测试覆盖各种可能的边界条件以及极端案例,确保每次修改都不会引入新的 bug。特别是在处理来自外部源的数据尤为重要[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值