包含的數(shù)據(jù)類型:
· number:和JavaScript的number完全一致;
· boolean:就是JavaScript的true或false;
· string:就是JavaScript的string;
· null:就是JavaScript的null;
· array:就是JavaScript的Array表示方式——[];
· object:就是JavaScript的{ ... }表示方式。
把任何JavaScript對象變成JSON,就是把這個(gè)對象序列化成一個(gè)JSON格式的字符串
1、對象序列化成JSON格式的字符串
var xiaoming = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '\"W3C\" Middle School',
skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};
function convert(key, value) {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
}
var s = JSON.stringify(xiaoming,['name', 'skills'],4);
var s2 = JSON.stringify(xiaoming, convert, ' ');
// 第一個(gè)參數(shù):js對象
//第二個(gè)參數(shù):Array輸出指定的屬性或者Function處理值
//第三個(gè)參數(shù):縮進(jìn),用于輸出美化
console.log(s);
//輸出
{
"name": "小明",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}
console.log(s2);
//輸出
{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" MIDDLE SCHOOL",
"skills": [
"JAVASCRIPT",
"JAVA",
"PYTHON",
"LISP"
]
}
2、JSON格式的字符串反序列化成一個(gè)JavaScript對象
//json鍵值必須都用" "
JSON.parse('{"name":"小明","age":14}');//{name: "小明", age: 14}
//JSON.parse()還可以接收一個(gè)函數(shù),用來轉(zhuǎn)換解析出的屬性
var obj = JSON.parse('{"name":"小明","age":14}', function (key, value) {
if (key === 'name') {
return value + '同學(xué)';
}
return value;
});
console.log(JSON.stringify(obj)); // {name: '小明同學(xué)', age: 14}