javascript JSON如何解析_如何将字符串转换为对象

JSON字符串转对象应使用JSON.parse(),需确保字符串为合法JSON格式(键名和字符串值必须用双引号),解析失败会抛异常,建议用try...catch捕获;切勿使用eval()。

JavaScript 中把 JSON 字符串转成对象,用 JSON.parse() 就行,这是标准、安全、最常用的方法。

使用 JSON.parse() 解析字符串

只要字符串是合法的 JSON 格式(注意:键名必须用双引号,不能用单引号或不加引号),就能直接解析:

  • 正确示例: JSON.parse('{"name": "张三", "age": 25}') → 返回一个对象
  • 错误示例: JSON.parse("{'name': '张三'}")(单引号)或 JSON.parse("{name: '张三'}")(没引号)都会报错

处理解析失败的情况

如果字符串格式不对,JSON.parse() 会直接抛出异常,所以建议加上 try...catch

  • 写法示例:
    try {
    const obj = JSON.parse(str);
    console.log(obj);
    } catch (e) {
    console.error('解析失败:', e.message);
    }
  • 常见错误原因:字符串为空、含非法字符、多了一个逗号、用了中文标点、或根本不是 JSON(比如是普通 JS 对象字面量)

注意和 eval() 的区别

别用 eval() 来“解析” JSON 字符串——它不安全,可能执行恶意代码,而且不校验 JSON 格式。JSON.parse 是专为 JSON 设计的,更可靠、更快、也更语义明确。

反向操作:对象转 JSON 字符串

如果之后需要把对象再变回字符串,用 JSON.stringify()

  • 例如:JSON.stringify({name: "李四", active: true})'{"name":"李四","active":true}'
  • 注意:函数、undefined、Symbol 类型的属性会被自动忽略;Date 对象会转成 ISO 字符串;循环引用会报错