跟着廖雪峰老师的 JavaScript 教程学习过程中,当学习到 JSON 时, 突然感觉自己学习过的知识点,是在有必要去总结起来,否则很有可能又吐出来。
JSON:JavaScript Object Notation的缩写,它是一种数据交换格式,它的最直观的特征就是,我们是以 key-value 为基础,来进行数据的传输,也就是说,我们所见的类似于
var xiaoming = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '"W3C" Middle School',
skills: ['JavaScript', 'Java', 'Python', 'Lisp']
}
是很明显的一个 JSON 形式的数据。
JSON 常用的函数
1. stringify , 实际上可以把一个对象展开。
上面为基础,我们如果运行如下代码:
var s = JSON.stringify(xiaoming);
console.log(s);
会出现:
{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":""W3C" Middle School","skills":["JavaScript","Java","Python","Lisp"]}
JSON.stringify(xiaoming, ['name', 'skills'], ' '); //专门筛选 name 和 skills
function convert(key, value) {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
}
JSON.stringify(xiaoming, convert, ' '); //声明一个函数,然后函数作用于 Json 对象
var xiaoming = { //函数不止可以外面定义,还可以在内部定义,从而作用于Json。
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}'
2.Json 形式的字符串,我们用 JSON.parse() 可以转换成 Javascript 形式的 对象。
var obj = JSON.parse('{"name":"小明","age":14}', function (key, value) { if (key === 'name') { return value + '同学'; } return value; }); console.log(JSON.stringify(obj)); // {name: '小明同学', age: 14}
起初我们没有 Json 对象,我们只有一些key-value 形式的信息,我们通过Json.parse()方法 ,将这些信息组织成一个Json形式的对象。