JSON
JSON(JavaScript Object Notation)是替代XML的一種標(biāo)準(zhǔn)。它是一個(gè)通用的數(shù)據(jù)格式诗箍。
語法
JSON語法支持3中類型
- 簡單值:null、number宠进、boolean屏箍、string。注意undefined不是胸哥。
- 對(duì)象:表示有序的鍵值對(duì)涯竟。
- 數(shù)組:表示可以通過數(shù)值索引訪問的值的有序列表。
注意事項(xiàng)
- JSON和JavaScript中的區(qū)別空厌。JSON中的
key
要使用引號(hào)引起來庐船,JavaScript中可以不使用。 - JSON對(duì)象最后一個(gè)屬性值后面沒有逗號(hào)嘲更,JSON數(shù)組最后一個(gè)值后面沒有逗號(hào)
JSON對(duì)象的解析與序列化
stringify()
JSON.stringify()
把一個(gè)JavaScript對(duì)象序列化為一個(gè)JSON字符串筐钟,保存到一個(gè)字符串中。
語法:
JSON.stringify(JavaScript對(duì)象, 過濾器, 縮進(jìn)值)
- JavaScript對(duì)象:即將要序列化的JavaScript對(duì)象
- 過濾器:可以是一個(gè)數(shù)組或一個(gè)函數(shù)赋朦。返回?cái)?shù)組中包含的key或函數(shù)設(shè)置返回值篓冲;函數(shù)返回
undefined
表示省略這個(gè)值李破。 - 縮進(jìn)值:控制縮進(jìn)和空格。
注意事項(xiàng)
1壹将、JavaScript對(duì)象中的值為undefined的時(shí)候嗤攻,序列化后會(huì)省略。
2诽俯、JavaScript對(duì)象序列化后妇菱,所有的函數(shù)和原型都會(huì)忽略。
function createCompareFunction(property) {
return function(obj1, obj2) {
let value1 = obj1[property];
let value2 = obj2[property];
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
}
let a = {
a: "a",
b: "b",
func: createCompareFunction,
un: undefined
}
console.log(JSON.stringify(a)) // {"a":"a","b":"b"}
parse()
JSON.parse()
把一個(gè)JSON字符串解析為一個(gè)JavaScript對(duì)象惊畏。
語法
JSON.parse(JSON字符串, 還原函數(shù))
- JSON字符串:將要解析的JSON字符串恶耽。
- 還原函數(shù):接收兩個(gè)參數(shù),一個(gè)表示key颜启,一個(gè)表示value偷俭。如果返回undefined,則刪除缰盏;否則就添加到結(jié)構(gòu)中涌萤。
第二個(gè)參數(shù)常用于將Date字符串轉(zhuǎn)換為Date對(duì)象。
let str = '{"a":"a","b":"b"}';
let json = JSON.parse(str);
console.dir(json)