JSON.parse解析字符串抛出异常解决方法

博客指出JSON数据格式要求严格,属性名称须用双引号括起,这是报错原因,同时还提及了解决该问题的两种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错原因:json数据的格式要求非常严格,属性名称必须是用双引号括起来

  • 解决方法一
var str = "{'name':'xiaoji', 'age':20}";
JSON.parse(str);    // 报错

var str='{"name":"xioaji", "age":20}';
JSON.parse(str);   // 正确
  • 解决方法二
// 自己写已个转obj函数
function to_Obj(str) {
	var obj = {};
    str.split(",").forEach((item) => {
        let key,value;
        key = item.split(":")[0].replace(/^\{/gi, "");
        value= item.split(":")[1].replace(/\}$/gi, "");
        obj[key] = value;
    });
    return obj
}
var str = "{'name':'xiaoji', 'age':20}";
to_Obj(str) // 成功返回对象
### 如何使用 `JSON.parse` 解析 JavaScript 数组 #### 示例用法 当处理来自服务器或其他数据源的 JSON 数据时,可能会遇到表示数组的 JSON 字符串。可以利用 `JSON.parse()` 方法将其转换回原生 JavaScript 数组。 考虑以下 JSON 格式的字符串代表了一个简单的姓名列表: ```javascript const jsonArrayString = '["John", "Paul", "George", "Ringo"]'; ``` 通过调用 `JSON.parse()` 可以轻松地将这个字符串转化为实际可用的 JavaScript 数组: ```javascript const namesArray = JSON.parse(jsonArrayString); console.log(namesArray); // 输出: ["John", "Paul", "George", "Ringo"] ``` 如果希望在解析过程中对每个元素执行特定操作,则可以通过提供第二个参数——即所谓的 “reviver” 函数 来实现这一点[^1]。 例如,在下面的例子中,每当解析到一个字符串类型的值时都会在其前后加上括号标记: ```javascript const transformedNamesArray = JSON.parse( jsonArrayString, (key, value) => typeof value === 'string' ? `[${value}]` : value ); console.log(transformedNamesArray); // 输出: ['[John]', '[Paul]', '[George]', '[Ringo]'] ``` #### 注意事项 - 如果尝试解析不是有效的 JSON 格式的数据,将会抛出错误。因此建议总是捕获可能发生的异常情况。 ```javascript try { let result = JSON.parse(invalidJsonString); } catch (error) { console.error('Invalid JSON string:', error.message); } ``` - 当传入给 `JSON.parse()` 的第一个参数不是一个合法的 JSON 文本时会触发 SyntaxError 错误;而当提供的 reviver 参数不符合预期行为(比如返回 undefined 或者删除某些键),则可能导致最终得到的对象结构发生变化[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值