javascript JSON是什么_如何解析和生成


JSON是一种轻量级数据交换格式,语法源于JavaScript但非其专有;支持字符串、数字、布尔值、null、对象和数组,不支持函数等类型;通过JSON.parse()解析、JSON.stringify()序列化,使用时需注意引号、数据类型兼容性及错误处理。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,不是 JavaScript 专有,但语法源于 JavaScript。它用文本表示结构化数据,易读、易写、易解析,被广泛用于前后端通信、配置文件、API 数据传输等场景。

JSON 的基本结构和规则

JSON 只支持几种基础数据类型:字符串(双引号包裹)、数字(含整数和浮点数)、布尔值(true / false)、null、对象(花括号 {},键必须是双引号字符串)、数组(方括号 [])。不支持函数、日期对象、undefined、正则表达式或循环引用。

例如合法 JSON:

{"name": "张三", "age": 28, "isStudent": false, "hobbies": ["读书", "游泳"], "address": {"city": "上海", "zip": "200000"}}

如何解析 JSON 字符串(转为 JavaScript 对象)

使用 JSON.parse() 方法,把符合 JSON 格式的字符串转换成 JS 值(对象或数组)。

  • 成功时返回对应 JS 数据,如 JSON.parse('{"a":1}') 返回 {a: 1}
  • 若字符串格式错误(如单引号、尾逗号、undefined 值),会抛出 SyntaxError,建议加 try-catch
  • 可选第二个参数 reviver 函数,用于在解析过程中过滤或转换字段值

示例:

try {
  const data = JSON.parse('{"price": 99.9, "inStock": true}');
  console.log(data.price); // 99.9
} catch (e) {
  console.error('解析失败:', e.message);
}

如何生成 JSON 字符串(序列化 JS 对象)

使用 JSON.stringify() 方法,把 JS 对象或数组转为标准 JSON 字符串。

  • 只处理可序列化的属性:忽略函数、undefined、Symbol 类型的键或值
  • 遇到不可序列化内容(如 Date 对象)会自动调用 .toString();Date 默认转为 ISO 字符串,但需注意时区
  • 可传入第二个参数 replacer(数组或函数)控制哪些字段保留;第三个参数用于美化输出(缩进空格数)

示例:

const obj = {
  name: "李四",
  birth: new Date("2000-01-01"),
  sayHi() { return "hello"; }
};
console.log(JSON.stringify(obj, null, 2));
// 输出:
// {
//  "name": "李四",
//  "birth": "2000-01-01T00:00:00.000Z"
// }

常见陷阱与注意事项

JSON 和 JS 对象不完全等价,实际使用中容易踩坑:

  • 键名必须用双引号,{'name': 'abc'}{name: 'abc'} 是 JS 对象,不是 JSON
  • JSON.parse(null) 返回 null,但 JSON.parse(undefined) 报错
  • 后端返回的 JSON 响应体需先检查 response.okContent-Type,再调用 .json()(fetch)或 JSON.parse()
  • 深层嵌套对象或大数组序列化/解析可能影响性能,必要时考虑流式处理或分块


# javascript  # java  # js  # json  # 正则表达式  # 后端  # 配置文件  # 上海 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win10怎样清理C盘浏览器缓存_Win10清理浏览器缓存步骤【步骤】  如何高效删除 NumPy 二维数组中所有元素相同的列  Windows 10怎么隐藏特定更新补丁_Windows 10使用微软官方工具wushowhide.diagcab  如何在 IIS 上为 ASP.NET 6 应用排除特定目录并交由 PHP 处理  Go 语言标准库为何不提供泛型切片的 Contains 方法?  XSLT怎么生成动态的HTML属性名和标签名  如何在 Go 后端安全获取并验证前端存储的 JWT?  Win11怎么关闭透明效果_Windows11个性化颜色关闭透明  Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】  本地php环境打开php文件直接下载_浏览器解析php为下载的修复方法【解答】  php查询数据怎么导出csv_查询结果转csv文件保存【操作】  Go 语言标准库为何不提供泛型 Contains 方法:设计哲学与类型系统约束  c++ std::atomic如何保证原子性 c++ CAS操作原理【底层】  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  Win10如何更改开机密码_Windows10登录选项更改密码  php订单日志怎么记录发货_php记录订单发货操作日志指南【指南】  Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】  如何在Golang中实现服务熔断与限流_Golang微服务容错与流控方法  Windows11如何设置专注助手_Windows11专注助手使用攻略【技巧】  Win11怎么关闭任务栏小图标_Windows11任务栏角溢出设置  如何使用Golang reflect检查方法数量_动态分析类型方法  Win10怎样安装Excel数据分析工具_Win10安装分析工具包步骤【教程】  Go 中实现 Python urllib.quote() 功能的等效方法  Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】  php会话怎么开启_session_start函数的作用与使用时机【方法】  Windows10怎么备份注册表_Windows10注册表备份步骤【教程】  Python代码测试策略_质量保障解析【教程】  如何在Golang中指定模块版本_使用go.mod控制版本号  c++中的Tag Dispatching是什么_c++利用标签分发优化函数重载【元编程】  Win10怎么创建桌面快捷方式 Win10为应用创建快捷方式【步骤】  如何优化Golang程序CPU性能_Golang CPU密集型任务优化方法  Python列表推导式与字典推导式教程_简化代码高效写法  C++中的constexpr和const有什么区别?(编译期常量)  php增删改查在php8里有什么变化_新特性对curd的影响【指南】  Win11怎么关闭开机声音_Win11系统启动提示音静音【教程】  Python大文件处理策略_内存优化说明【指导】  php怎么下载安装后设置默认字符集_utf8配置步骤【详解】  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何在JavaScript中动态拼接PHP的base_url与前端变量  Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】  Win11怎么查看局域网电脑_Windows 11网络邻居发现设置【技巧】  Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】  c++中的std::conjunction和std::disjunction是什么_c++模板元编程逻辑运算【C++17】  Python并发安全问题_资源竞争说明【指导】  如何使用Golang实现文件加密_Golang crypto 文件加密示例  Python网页解析流程_html结构说明【指导】  如何使用正则表达式批量替换重复的 *- 模式为固定字符串  Win11怎么关闭定位服务 Win11禁止应用获取位置信息【隐私】  php订单日志怎么记录物流_php记录订单物流变更日志指南【指南】  win11如何清理传递优化文件 Win11为C盘瘦身删除更新缓存【技巧】 

 2025-12-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.