JSON.parse和stringify使用教程
时间:2025-12-22 13:27:39 107浏览 收藏
知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《JSON.parse和stringify用法详解》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!
JSON.parse()将合法JSON字符串转为JS值,JSON.stringify()将JS值转为JSON字符串;二者均不支持函数、undefined、Symbol等,且需注意日期、正则等特殊对象的序列化限制。

JSON.parse() 和 JSON.stringify() 是 JavaScript 中处理 JSON 数据最核心的两个方法,一个负责“读”,一个负责“写”。它们不复杂,但细节容易忽略,用错会直接报错或得到意外结果。
JSON.parse():把字符串变成对象
它只接受合法的 JSON 字符串(注意:必须是双引号,不能是单引号;不能有尾逗号;不能包含 undefined、函数、Symbol 等非法值)。
- 基础用法:直接传入字符串,返回对应 JS 值 —— 可能是对象、数组、数字、布尔值或 null
JSON.parse('{"name":"张三","age":25}') // {name: "张三", age: 25}
JSON.parse('true') // true
JSON.parse('[1,2,3]') // [1, 2, 3]
- 带 reviver 函数:第二个参数是个回调,会在解析过程中对每个键值对执行,可用于数据清洗或类型转换
JSON.parse('{"age":25}', (key, value) => key === 'age' ? String(value) : value) // {age: "25"}
JSON.stringify():把对象变成字符串
它能把大多数 JS 值转成标准 JSON 字符串,但有明确限制 —— 函数、undefined、Symbol、NaN、Infinity 会被忽略或转为 null;循环引用直接报错。
- 基础用法:传入对象/数组/基本类型,返回字符串
JSON.stringify({name: '李四', city: '上海'}) // '{"name":"李四","city":"上海"}'
- 第二个参数 replacer:可以是数组(指定要保留的属性名),也可以是函数(类似 parse 的 reviver,用于过滤或改写)
- 第三个参数 space:控制缩进,让输出更易读,比如传 2 或 '\t'
JSON.stringify({a: 1, b: 2}, null, 2)
// 输出带缩进的格式化字符串
常见坑和注意事项
这两个方法不是万能的“深拷贝工具”,也不是任意对象都能进出的管道。
- Date 对象会被转成 ISO 字符串,再 parse 回来就只是字符串,不再是 Date 实例
- 正则、Map、Set、Promise 等原生对象无法被原样 stringified,需手动处理
- 数组里有 undefined、函数、Symbol:stringify 后对应位置变成 null(数组)或被跳过(对象)
- 解析失败时抛 SyntaxError,建议用 try/catch 包裹 JSON.parse()
典型使用场景
它们最常出现在这些地方:
- 前后端通信:fetch/post 请求体用 stringify,响应体用 parse
- 本地存储:localStorage 只支持字符串,存对象前 stringify,取出来后 parse
- 调试输出:用 stringify(obj, null, 2) 格式化打印嵌套结构
- 简单深拷贝(仅限纯数据对象):JSON.parse(JSON.stringify(obj))
基本上就这些。记牢“parse 是进,stringify 是出”,再留意下哪些值不支持,就能避开大部分问题。
以上就是《JSON.parse和stringify使用教程》的详细内容,更多关于的资料请关注golang学习网公众号!
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
303 收藏
-
227 收藏
-
166 收藏
-
459 收藏
-
373 收藏
-
425 收藏
-
314 收藏
-
184 收藏
-
403 收藏
-
270 收藏
-
423 收藏
-
496 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习