繁体   English   中英

如何处理包含 null 的 JavaScript 对象(解析的 JSON)?

[英]How to handle JavaScript objects (parsed JSON) that contain null?

我正在使用 JavaScript/jQuery 通过 ajax 调用以 json 形式获取数据。 然后将 json 解析为 JavaScript 对象。 让我们调用对象var

现在我想将对象中的一个值分配给一个变量:

let publicationDay = val["work-summary"][0]["publication-date"]["day"]["value"]

只要这个值存在,就可以工作。 但是,对于某些结果,该对象包含的不是["value"]而是["day"] null (如下所示)

val["work-summary"][0]["publication-date"]["day"] // is null

在这种情况下, let publicationDay = val["work-summary"][0]["publication-date"]["day"]["value"]将抛出以下错误:

Uncaught TypeError: val['work-summary'][0]['publication-date'].day is null

并且代码执行停止。 当然,我可以检查val["work-summary"][0]["publication-date"]["day"] === null ,但是处理这种情况的最优雅的方法是什么? 也许,未来甚至

val['work-summary'][0]['publication-date'] // is null

可能会发生,我的null检查不起作用。

很大程度上取决于您的上下文,但这里有一些示例。

const publicationDate = val['work-summary'][0]['publication-date'];

// usage
console.log(publicationDate && publicationDate.day && publicationDate.day.value); // very basic
console.log(publicationDate?.day?.value); // optional chaining, better if supported by your environment (should be)
console.log(get(publicationDate, “day.value”)); // lodash get()

我建议尝试可选链接。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

假设这些值中的任何一个都可以为空:

let publicationDay = val?.["work-summary"]?.[0]?.["publication-date"]?.["day"]?.["value"]

它将变量设置为day.valueundefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM