色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

es6判斷是否是json

在ES6中,判斷一個(gè)對(duì)象是否為JSON有一種簡(jiǎn)單而且直觀的方法——使用typeof操作符。

const myObj = {a: 1, b: 2};
const isJSON = typeof myObj === 'object' && myObj !== null && !Array.isArray(myObj);
console.log(isJSON); // true

這里我們需要先對(duì)typeof操作符的特性進(jìn)行了解。typeof操作符用于返回一個(gè)變量的數(shù)據(jù)類型字符串。如果變量是一個(gè)對(duì)象,則typeof返回"object"字符串,而ES6中的null也會(huì)返回"object"字符串。因此我們需要在判斷時(shí)額外加上一個(gè)判斷null的條件。

同時(shí),在判斷是否為JSON時(shí)還需要注意數(shù)組的情況。在JavaScript中,數(shù)組也是一種對(duì)象,因此普通對(duì)象和數(shù)組都可以通過(guò)typeof返回"object"字符串。而按照J(rèn)SON的定義,JSON應(yīng)該是一種鍵值對(duì)的集合,不允許出現(xiàn)數(shù)組。因此我們還需增加一個(gè)判斷數(shù)組的條件。

const myArr = [1, 2];
const isJSON2 = typeof myArr === 'object' && myArr !== null && !Array.isArray(myArr);
console.log(isJSON2); // false

在判斷是否為JSON時(shí),還可以使用try-catch語(yǔ)句拋出錯(cuò)誤的方式。當(dāng)JSON.parse()解析失敗時(shí),說(shuō)明傳入的參數(shù)不符合JSON格式。

function isJSON(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
console.log(isJSON('{"name": "Tom", "age": 18}')); // true

上面代碼中,我們使用JSON.parse()嘗試將傳入字符串解析為JSON。如果JSON.parse()正常執(zhí)行沒(méi)有拋出錯(cuò)誤,將返回解析后的對(duì)象,說(shuō)明傳入字符串符合JSON格式;如果JSON.parse()執(zhí)行拋出了錯(cuò)誤,將返回false,說(shuō)明傳入的不符合JSON格式。