javascript中的null在json中是合法且明确支持的值,直接对应json规范中的null类型,表示“空值”或“有意缺失的值”;而undefined在json中不被允许,序列化时会被忽略。

JavaScript 中的 null 在 JSON 中是合法且明确支持的值,它直接对应 JSON 规范中的 null 类型,表示“空值”或“有意缺失的值”,不是错误,也不是未定义。
JSON 里 null 是标准数据类型
JSON 官方只允许五种基础类型:字符串、数字、布尔值、数组、对象,外加一个特殊字面量 null。它和 JavaScript 的 null 完全等价,但和 undefined 不同——undefined 在 JSON 中不被允许,序列化时会被自动忽略或丢弃。
-
JSON.stringify({ a: null })→{"a":null}(正常保留) -
JSON.stringify({ a: undefined })→{}(键值对整个消失) -
JSON.parse('{"a":null}').a === null→true
后端传 null 到前端的常见场景
服务端返回 JSON 数据时,常把数据库中空字段、可空列或未赋值字段序列化为 null,比如:
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- PostgreSQL 的
NULL值经 JSON 序列化后变成"field": null - .NET 中
DBNull.Value或 C# 的可空类型(如int?)未赋值时也输出null - Java 使用
JSONNull.getInstance()或直接写null,最终生成的 JSON 字符串仍是"key":null
前端处理 JSON 中的 null 要避免踩坑
从 JSON 解析出来的 null 是真实值,但容易和 undefined 混淆,尤其在取属性时:
- 如果响应是
{"user": null},访问res.user.name会报错Cannot read property 'name' of null - 安全写法是先判空:
res.user && res.user.name或res.user?.name(可选链) -
if (res.user === null)是准确判断;if (!res.user)会把0、""、false也误判为真
null 在图表或渲染逻辑中的实际作用
有些库(如 ECharts)把 null 或 undefined 当作“断点”来处理:
- 折线图数据中写
[1, 2, null, 4],会跳过第三点,形成断开的线段 - 这比用占位数值(如
0或-999)更语义清晰,也避免干扰统计逻辑 - 注意:部分 UI 组件对
null渲染行为不一致,建议查阅文档确认是否支持
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










