新闻中心

j*ascript的JSON如何解析_parse和stringify方法怎么用?

2025-12-14
浏览次数:
返回列表
JSON.parse()将合法JSON字符串转为JS值,JSON.stringify()将JS值转为JSON字符串;二者均不支持函数、undefined、Symbol等,且需注意日期、正则等特殊对象的序列化限制。

javascript的json如何解析_parse和stringify方法怎么用?

JSON.parse() 和 JSON.stringify() 是 J*aScript 中处理 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;循环引用直接报错。

Glarity Glarity

Glarity是一款免费开源的AI浏览器扩展,提供YouTube视频总结、网页摘要、写作工具等功能,支持免费的镜像翻译,电子邮件写作辅助,AI问答等功能。

Glarity 131 查看详情 Glarity
  • 基础用法:传入对象/数组/基本类型,返回字符串

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 是出”,再留意下哪些值不支持,就能避开大部分问题。

以上就是j*ascript的JSON如何解析_parse和stringify方法怎么用?的详细内容,更多请关注其它相关文章!


# javascript  # 报错  # 搜索关键词排名简单吗  # 成都电子商务seo  # 蔬菜网站建设的需求分析  # 吉林网站推广平台有哪些  # 内蒙古网站建设系统  # 江门网站建设风格设计  # 北京自动网站建设电话  # 深圳市网络营销推广招聘  # 许昌百度seo网站优化哪家靠谱  # 齐全的福州seo方案  # 转成  # 有什么区别  # 如何解决  # 等功能  # 可以使用  # 第二个  # 键值  # 键值对  # 上海  # 数据清洗  # 后端  # 工具  # json  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: C++如何实现线程池_C++11手动实现一个简单的固定大小线程池  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  高德地图怎么看全景照片_高德地图全景照片浏览教程  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  快手赚钱渠道_快手收益来源  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  Go语言中高效处理x-www-form-urlencoded表单数据  星露谷物语官网入口 星露谷物语游戏官网入口  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  微信聊天记录怎么加密_微信聊天记录加密方法  小米Civi 4录制视频过暗_小米Civi 4亮度优化  抖音从哪里进入网页版_抖音官方入口链接  Flexbox布局实践:实现粘性导航栏与底部固定页脚  如何在J*a中实现统一对象行为接口_项目大型化时的接口规范化  Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略  composer的"require-dev"部分是用来做什么的?  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  随机参数递归函数的基准调用次数与时间复杂度探究  如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题  谷歌推RCS信息存档功能:公司可监控员工私密信息!  Angular中父组件异步更新子组件复选框状态的实践指南  快手官方唯一登录入口 谨防山寨钓鱼网站  必由学网页版入口 必由学官方平台直接访问  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  Golang如何使用new_Go new分配内存机制讲解  python3时间如何用calendar输出?  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  菜鸟取件码是什么怎么查 最全查询渠道汇总  多闪网页版在线观看免费入口_多闪官网访问入口  MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  绝地鸭卫平a核爆刀流玩法攻略  outlook中文官网入口地址 outlook官方中文版直达首页链接  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  J*a应用程序首次运行自动创建文件与目录的最佳实践  Pandas DataFrame:高效添加条件计算列  Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求  C++指针和引用有什么区别_C++内存管理核心概念深度解析  如何将HTML表格多行数据保存到Google Sheet 

搜索