json.parse() 能正确将 json 中的 null 解析为 javascript 的 null 值,无需类型修复;应使用 === null、!= null 或可选链(?.)安全判断和访问,避免 if(obj.name) 或直接调用 null 属性导致错误。

JSON.parse() 本身就能正确还原 null,无需额外操作——它会把 JSON 中的 null 字面量原样转为 JavaScript 的 null 值,类型就是 object(这是 JS 历史遗留行为,但语义和用途完全等价于“空值”)。
关键不在“还原”,而在后续使用中避免误判或崩溃,尤其当字段可能为 null 时。
null 值在解析后的真实表现
-
{ "name": null }→JSON.parse(...)后obj.name === null为true -
typeof obj.name返回"object",但这是 JS 规范行为,不影响逻辑判断 - 它不是字符串
"null",不是undefined,也不是空对象{}
所以你不需要“修复类型”,只需统一用 === null 或 == null 判断,而不是依赖 typeof 做类型分支。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
避免常见误操作
- ❌ 不要用
if (obj.name)——null是 falsy,但0、""、false也是,容易误伤 - ❌ 不要写
obj.name.length——null.length会直接报错Cannot read property 'length' of null - ✅ 正确做法:
-
if (obj.name !== null && obj.name !== undefined)(显式双检) - 更简洁:
if (obj.name != null)(利用==对null/undefined的宽松相等) - 或直接用可选链:
obj.name?.length(ES2020+,安全访问)
-
与后端字段不一致时的兜底策略
有些后端会把缺失字段返回为 "null" 字符串(非法 JSON),或字段值是 null 但前端期望是字符串。这时需清洗:
const data = JSON.parse(jsonStr); // 统一将 null 字符串转为真正的 null if (data.name === "null") data.name = null; // 确保 name 是字符串或 null data.name = typeof data.name === "string" ? data.name : null;
嵌套结构中 null 的安全访问
当 data.user.profile 可能为 null 时,别写 data.user.profile.avatar,改用:
- 可选链 + 空值合并:
data.user?.profile?.avatar ?? "default.png" - 或传统防御式写法:
const avatar = (data.user && data.user.profile && data.user.profile.avatar) ? data.user.profile.avatar : "default.png";
不复杂但容易忽略










