如何用JS判斷JSON是否包含某個Key

在Web開發中,經常需要對JSON對象進行處理。在處理過程中,檢查一個JSON對象是否包含某個key是一項基本的技能。本文將從多個方面詳細介紹如何使用JavaScript判斷JSON對象是否包含某個Key。

一、通過in、hasOwnProperty和undefined來判斷key是否存在

//判斷key是否存在
function hasKey(json, key) {
    return key in json || json.hasOwnProperty(key) || typeof(json[key]) !== "undefined";
}

使用JavaScript中的in、hasOwnProperty和undefined來判斷JSON對象中是否存在key,這是最常見的判斷方法。in判斷方法可以判斷JSON對象以及原型鏈中是否存在key。hasOwnProperty方法只判斷當前對象中是否存在key。typeof方法判斷當前對象中是否存在key的值,無論值為何種數據類型。

但是,使用in方法判斷某個JSON對象的key時有一個注意點,就是需要使用hasOwnProperty方法判斷obj是否繼承其原型鏈中的屬性和方法。例如:

var obj = { a: 1, b: 2 };
Object.prototype.c = 3;

console.log('a' in obj); // true
console.log('b' in obj); // true
console.log('c' in obj); // true

console.log(obj.hasOwnProperty('a')); // true
console.log(obj.hasOwnProperty('b')); // true
console.log(obj.hasOwnProperty('c')); // false

從這個例子中可以看到,在使用in進行判斷時,會沿著對象原型鏈繼續尋找屬性。因此,可以看到c這個屬性並不屬於obj,而是繼承來自其原型鏈。這時候使用hasOwnProperty就能準確判斷obj中究竟是否含有這個屬性。

二、通過Object.keys方法來判斷json包含的所有key

//判斷key是否存在
function hasKeys(json, keys) {
    return keys.every(key => Object.keys(json).includes(key));
}

Object.keys方法返回JSON對象中所有自己的key列表。因此,只需要通過Object.keys方法獲取json中所有的key列表,再使用includes方法判斷列表中是否包含需要判斷的key即可。

三、通過JSON Schema來判斷json是否包含某個key

//判斷key是否存在
function validate(json, schema) {
    const validator = ajv.compile(schema); // 使用ajv模塊進行JSON Schema驗證
    return validator(json);
}
const schema = {
    type: 'object',
    properties: {
        name: { type: "string" },
        age:  { type: "number" },
    }, 
    required: ["name", "age"],
};

console.log(validate({name: 'Tom', age: 18}, schema)); // true
console.log(validate({name: 'Tom'}, schema)); // false

JSON schema是對JSON對象結構的一種描述語言,可以對JSON對象進行格式驗證。使用JSON schema,可以詳細描述JSON對象的key類型和必要性。可以使用第三方庫如ajv來進行JSON schema的驗證。通過這種方法,可以在保證代碼不臃腫的同時,極大地提高代碼健壯性以及操作完成的準確程度。

四、通過lodash的get方法判斷json是否包含某個深層次的key

function hasDeepKey(obj, key) {
    if (_.isObject(obj)) {
        if (_.has(obj, key)) {  // 如果對象包含該屬性,則直接返回true
            return true;
        }
        //否則遍歷對象的值,查找是否包含該屬性
        for (let k in obj) {
            if (hasDeepKey(_.get(obj, k), key)) {
                return true;
            }
        }
    }
    return false;
}

使用這種方法不僅能檢查對象是否包含某個key,同時還能夠檢查對象中嵌套的屬性是否包含某個key。這種方法使用了lodash庫中的isObject、has、get等方法。

五、通過try catch語句塊try訪問key,若發生錯誤則說明key不存在

function tryAccessKey(json, key) {
    try {
        const value = json[key];
        return typeof value !== "undefined";
    }
    catch {
        return false;
    }
}

這種方法通過try catch語句塊來捕獲錯誤,來判斷json中是否含有某個屬性。如果訪問key時成功,則說明json對象,而如果發生錯誤則說明json對象中不包含該屬性。

結論

在處理JSON對象時,判斷一個JSON對象是否含有某個屬性是一項基本技能。通過本文所述的五種方法,可以靈活運用各種方法判斷JSON對象的Key是否存在。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232564.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:52
下一篇 2024-12-11 12:52

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 如何用Python寫愛心

    本文將會從多個方面闡述如何用Python語言來畫一個美麗的愛心圖案。 一、準備工作 在開始編寫程序之前,需要先理解一些編程基礎知識。首先是繪圖庫。Python有很多繪圖庫,常見的有…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python如何遍歷字典中的key和value

    本文將詳細講解Python中如何遍歷字典中的key和value,包括多種遍歷方式以及在遍歷過程中的一些應用場景。 一、遍歷字典中的key和value 在Python中,字典是一種無…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分散式文件系統(HDFS)。HDFS是一個可擴展性高的分散式…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • 如何用Python對數據進行離散化操作

    數據離散化是指將連續的數據轉化為離散的數據,一般是用於數據挖掘和數據分析中,可以幫助我們更好的理解數據,從而更好地進行決策和分析。Python作為一種高效的編程語言,在數據處理和分…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • 如何用Python列印溫度轉換速查表

    本文將從多個方面闡述如何用Python列印溫度轉換速查表,以便於快速進行溫度轉換計算。 一、Python列印溫度轉換速查表的基本知識 在計算機編程領域中,溫度轉換是一個重要的計算。…

    編程 2025-04-29

發表回復

登錄後才能評論