簡體   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