首页 > web前端 > js教程 > 正文

javascript如何解析与操作JSON数据_常见序列化问题有哪些

狼影
发布: 2025-12-22 21:15:07
原创
489人浏览过
JavaScript中安全处理JSON需用try...catch包裹JSON.parse()并利用reviver转换日期,JSON.stringify()会忽略undefined/函数/Symbol且不支持循环引用,须手动处理ISO日期、过滤循环引用及编码问题。

javascript如何解析与操作json数据_常见序列化问题有哪些

JavaScript 中解析和操作 JSON 数据主要靠 JSON.parse()JSON.stringify(),但实际使用中容易踩坑——比如日期变字符串、函数丢失、循环引用报错、特殊字符处理异常等。

如何安全解析 JSON 字符串

JSON.parse() 解析字符串时,必须确保输入是合法 JSON 格式(双引号键名、无尾逗号、无注释、无 undefined 或函数)。非法格式会直接抛出 SyntaxError。

  • 始终用 try...catch 包裹解析逻辑,避免崩溃
  • 可传入第二个参数 reviver 函数 在解析过程中转换值,例如把 ISO 字符串转为 Date 对象
  • 浏览器环境可配合 response.json()(fetch API)自动解析,但后端返回非 JSON 内容时仍需错误处理

如何正确序列化 JS 对象为 JSON

JSON.stringify() 会忽略 undefined、函数、Symbol 类型的属性,且不能处理循环引用对象(会报 TypeError: Converting circular structure to JSON)。

  • 若需保留日期,先手动转成 ISO 字符串:obj.date = obj.date.toISOString()
  • 处理循环引用:可用自定义 replacer 过滤掉引用字段,或借助库如 flattedcycle
  • 需要缩进美化输出时,第三个参数支持数字(空格数)或字符串(如 " "

常见 JSON 序列化/解析问题汇总

以下问题高频出现,且容易被忽视:

Stable Video
Stable Video

Stability AI 发布的开源AI视频大模型,用文字或图像创建视频,把你的概念变成迷人的电影

Stable Video 227
查看详情 Stable Video

立即学习Java免费学习笔记(深入)”;

  • 时间对象变成空对象JSON.stringify(new Date()) 返回 "2023-01-01T00:00:00.000Z" 是对的,但 JSON.parse() 不会自动还原为 Date,得靠 reviver 手动转换
  • NaN、Infinity 转为 null:JSON 规范不支持这些值,序列化后变成 null,解析后无法区分原始值
  • 中文或特殊字符乱码:通常因响应头缺少 Content-Type: application/json; charset=utf-8,或文件保存编码不是 UTF-8
  • 前后端字段命名不一致:JS 常用 camelCase,后端常用 snake_case,需在解析后映射或用库如 camelize/decamelize

实用建议:提升健壮性的小技巧

不必每次都手写容错逻辑,可以封装轻量工具函数:

  • 写一个 safeParse(jsonStr, defaultValue = null),内部 try/catch 并返回默认值
  • JSON.stringify(obj, (key, val) => typeof val === 'bigint' ? val.toString() : val) 支持 BigInt(ES2020+)
  • 调试时用 console.log(JSON.stringify(obj, null, 2)) 查看结构,比直接打印更清晰

以上就是javascript如何解析与操作JSON数据_常见序列化问题有哪些的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号