JSON
JSON是JavaScript Object Notation的缩写,它是一种数据交换花样。
道格拉斯·克罗克福特(Douglas Crockford)–雅虎的高等架构师–发清楚明了JSON这类超轻量级的数据交换花样.
序列化
让我们先把小明这个对象序列化成JSON花样的字符串:
var xiaoming = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '\"W3C\" Middle School',
skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};
JSON.stringify(xiaoming); // '{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}'
要输出得悦目一些,能够加上参数,按缩进输出:
JSON.stringify(xiaoming, null, ' ');
效果:
{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}
第二个参数用于掌握怎样挑选对象的键值,假如我们只想输出指定的属性,能够传入Array:
JSON.stringify(xiaoming, ['name', 'skills'], ' ');
效果:
{
"name": "小明",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}
还能够传入一个函数,如许对象的每一个键值对都会被函数先处置惩罚:
function convert(key, value) {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
}
JSON.stringify(xiaoming, convert, ' ');
上面的代码把一切属性值都变成大写:
{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" MIDDLE SCHOOL",
"skills": [
"JAVASCRIPT",
"JAVA",
"PYTHON",
"LISP"
]
}
假如我们还想要准确掌握怎样序列化小明,能够给xiaoming定义一个toJSON()的要领,直接返回JSON应当序列化的数据:
var xiaoming = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '\"W3C\" Middle School',
skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
toJSON: function () {
return { // 只输出name和age,而且改变了key:
'Name': this.name,
'Age': this.age
};
}
};
JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'
反序列化
拿到一个JSON花样的字符串,我们直接用JSON.parse()把它变成一个JavaScript对象:
JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}
JSON.parse('true'); // true
JSON.parse('123.45'); // 123.45
JSON.parse()还能够吸收一个函数,用来转换解析出的属性:
JSON.parse(‘{“name”:”小明”,”age”:14}’, function (key, value) {
// 把number * 2:
if (key === 'name') {
return value + '同砚';
}
return value;
}); // Object {name: '小明同砚', age: 14}
在JavaScript中运用JSON,就是这么简朴!