登录
首页 >  文章 >  前端

JSON解析与序列化技巧分享

时间:2025-12-10 16:27:43 149浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

学习文章要努力,但是不要急!今天的这篇文章《JSON解析与序列化方法详解》将会介绍到等等知识点,如果你想深入学习文章,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

JavaScript中JSON解析与序列化依靠原生JSON.parse()和JSON.stringify(),前者将符合JSON格式的字符串转为JS值(需双引号),后者将JS值转为JSON字符串(忽略函数、undefined等),二者均需注意Date、循环引用、NaN等特殊值处理。

Javascript中的JSON如何解析与序列化?

JavaScript 中的 JSON 解析与序列化主要靠 JSON.parse()JSON.stringify() 两个原生方法,它们不依赖外部库,安全、高效、浏览器和 Node.js 全支持。

JSON.parse():把字符串转成 JavaScript 对象

用于将符合 JSON 格式的字符串解析为对应的 JS 值(对象、数组、字符串、数字、布尔值或 null)。注意:JSON 键名和字符串值必须用双引号,单引号或未加引号的键会报错。

  • 基本用法:JSON.parse('{"name": "Alice", "age": 30}') → 返回一个对象
  • 带错误处理:建议用 try/catch 包裹,防止非法 JSON 导致脚本中断
  • 可选第二个参数 reviver 函数,用于在解析过程中过滤或转换值(例如把时间字符串自动转成 Date)

JSON.stringify():把 JavaScript 值转成 JSON 字符串

将对象、数组等 JS 值序列化为标准 JSON 字符串。只处理可枚举的自有属性,函数、undefined、Symbol、BigInt 和循环引用会自动被忽略或报错。

  • 基本用法:JSON.stringify({name: "Bob", active: true})'{"name":"Bob","active":true}'
  • 第二个参数可传数组(指定需要序列化的属性名)或 replacer 函数(自定义每个值的输出)
  • 第三个参数用于美化输出:传数字(缩进空格数)或字符串(如 '\t'),方便调试

常见坑与注意事项

这两个方法看似简单,但实际使用中容易踩坑:

  • Date 对象:直接 stringfy 会变成 ISO 字符串,parse 后只是普通字符串,不是 Date 实例
  • undefined / 函数 / Symbol:stringify 时会被跳过;若作为对象属性值,整个键值对消失
  • 循环引用:stringify 会抛出 TypeError,需提前检测或用第三方库(如 flatted)处理
  • NaN 和 Infinity:stringify 后变成 null,parse 后仍是 null,无法保留原意

简单实用技巧

日常开发中可以这样提升健壮性:

  • 封装安全 parse:const safeParse = str => { try { return JSON.parse(str); } catch { return null; } };
  • 深克隆小对象:用 JSON.parse(JSON.stringify(obj))(仅适用于纯数据,不含函数、Date 等)
  • 调试打印:用 console.log(JSON.stringify(data, null, 2)) 查看结构更清晰

基本上就这些。掌握好 parse 和 stringify 的行为边界,比记住语法更重要。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>