JavaScript Object Notation(JavaScript 对象标记法)
JSON 是一种存储和交换数据的语法。
JSON 是通过 JavaScript 对象标记法书写的文本。
JSON 文件的文件类型是 ".json"
JSON 文本的 MIME 类型是 "application/json"
json对象使用与javascript基本一致
存储数据
1. 转换成json字符串:
var myJSON = JSON.stringify(data);
serializeArray() 数据转换后:
[{"name":"aa","value":"小明"},{"name":"bb","value":"12"}](变化是name加了引号)
serialize()(aa=id&bb=12)数据转换后:
"aa=ld&bb=12"(变化是整体加了引号)
js对象 数据转换后:
{"name":"ld","age":12}(变化是name加了引号)
如果我们还想要精确控制如何序列化小明,可以给xiaoming定义一个toJSON()的方法,直接返回JSON应该序列化的数据:
var xiaoming = {
name: '小明',
age: 14,
gender: true,
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.parse() 解析数据,这些数据会成为 JavaScript 对象:
var obj = JSON.parse(data);(变化是name去了引号)
document.getElementById("demo").innerHTML = obj.name;
JSON 数据 名称和值
JSON 名称需要双引号。而 JavaScript 名称不需要。
JSON
{ "name":"Bill Gates" }
JavaScript
{ name:"Bill Gates" }
在 JSON 中,值必须是以下数据类型之一:
字符串
数字:{ "age":30 }
对象(JSON 对象):{"employee":{ "name":"Bill Gates", "age":62, "city":"Seattle" }}
数组:{"employees":[ "Bill", "Steve", "David" ]} or [ "Porsche", "BMW", "Volvo" ]
布尔:{ "sale":true }
null:{ "middlename":null }
JSON 的值不可以是以下数据类型之一:
1. 函数
2. 日期:JSON.stringify() 函数将把任何日期转换为字符串。
3. undefined