JSON
JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。
JSON 英文全称 JavaScript Object Notation
//创建一个JSON字符串(字符串为 JSON 格式的数据)
var JSONString = '{ "name": "张三", "age": 18 }';
console.log(typeof JSONString);//string
var x = JSON.parse(JSONString)//将一个 JSON 字符串转换为 JavaScript 对象。
console.log(typeof x );//object
//创建一个js对象
var obj = { name: "lily", age: 20 };
console.log(typeof obj);//object
var y = JSON.stringify(obj);//将 JavaScript 值转换为 JSON 字符串。
console.log(typeof y);//string
JSON 语法规则
-
数据为 键/值 对。(键必须在双引号中,值可以不在双引号中,如:“name”:“Runoob”)
-
值可以是字符串(string)、数值(number) 、对象(object)、数组(array)、布尔值(boolean)、 null。
-
数据由逗号分隔。
-
大括号保存对象(如:{“name”:“lily”, “sex”:“女”})
-
方括号保存数组
-
{ "sites":[ {"name":"Runoob", "url":"www.runoob.com"}, {"name":"Google", "url":"www.google.com"}, {"name":"Taobao", "url":"www.taobao.com"} ] }
-
对象和数组的最后一个成员后面,不能加逗号
-
JSON 字符串不能使用单引号(否则使用JSON.parse()会报错)
-
一个有效的JSON文档需要被包含在一对花括号内
-
{ JSON-Data }
-
JSON不允许在JSON文档或字符串中添加注释
-
JSON 不允许包含函数
-
JSON 不能存储 Date 对象。
表示数据的方式一:JSON对象
键/值对(名称/值)的无序集合,可以使用点号(.)或中括号([])来访问对象的值
let x = { "name": "lily", "age": 20 }
console.log(x.name);//lily
console.log(x["name"]);//lily
可以使用 for-in 来循环对象的属性
var myObj = { "name": "runoob", "alexa": 10000, "site": null };
for (x in myObj) {
console.log(myObj[x]);;
}
可以嵌套,修改,删除。
delete myObj.site;//删除site属性
表示数据的方式二:JSON数组
值的有序集合,可以使用索引访问
let x = {
"array": [
{
"name": "C语言中文网",
"url": "http://c.biancheng.net/",
"course": "JSON教程"
},
[
"JSON是什么?",
"JSON语法规则",
"JSON数据类型"
],
"JSON",
18,
true
]
}
console.log(x.array[3]);//18
可以循环,嵌套,修改,删除
delete x.array[0];
console.log(x);//[空白, Array(3), 'JSON', 18, true]
注:delete 运算符并不是彻底删除数组元素,而是删除它的值,但仍会保留空间。只是将该值置为 undefined,而不会影响数组长度,即将其变为稀疏数组(《JS权威指南》7.5节)
JSON.parse()
将一个 JSON 字符串转换为 JavaScript 对象。
完整语法
JSON.parse(text[, reviver])
var JSONString = '{ "name": "张三", "age": 18 }';
var x = JSON.parse(JSONString)
JSON.stringify()
将 JavaScript 值转换为 JSON 字符串。
完整语法:
JSON.stringify(value[, replacer[, space]])
var obj = { name: "lily", age: 20 };
var y = JSON.stringify(obj);