JSON: JavaScript Object Notation(JavaScript 对象标记法)。
//存储数据: myObj = { name:"Bill Gates", age:62, city:"Seattle" }; myJSON = JSON.stringify(myObj); localStorage.setItem("testJSON", myJSON); //接收数据: text = localStorage.getItem("testJSON"); obj = JSON.parse(text); document.getElementById("demo").innerHTML = obj.name;
JSON 语法规则
JSON 语法衍生于 JavaScript 对象标记法语法:
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号容纳对象
- 方括号容纳数组
JSON 数据- 名称和值
实例
"name":"Bill Gates"
JSON 名称需要双引号。而 JavaScript 名称不需要。
JSON – 求值为 JavaScript 对象
JSON 格式几乎等同于 JavaScript 对象。
在 JSON 中,键必须是字符串,由双引号包围:
JSON 值
在 JSON 中,值必须是以下数据类型之一:
- 字符串
- 数字
- 对象(JSON 对象)
- 数组
- 布尔
- null
在 JavaScript 中,以上所列均可为值,外加其他有效的 JavaScript 表达式,包括:
- 函数
- 日期
- undefined
在 JSON 中,字符串值必须由双引号编写:
JSON
{ "name":"Bill Gates" }
在 JavaScript 中,您可以书写使用双引号或单引号的字符串值:
JavaScript
{ name:'Bill Gates' }
var person = { name : "Bill Gates", age : 62, city : "Seattle" }; person.name; person["name"];
JSON.parse()
JSON 的常规用途是同 web 服务器进行数据传输。
在从 web 服务器接收数据时,数据永远是字符串。
通过 JSON.parse() 解析数据,这些数据会成为 JavaScript 对象。
或者您可以已使用 JSON.parse() 函数的第二个参数,被称为 reviver。
这个 reviver 参数是函数,在返回值之前,它会检查每个属性。
比如
var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}'; var obj = JSON.parse(text, function (key, value) { if (key == "birth") { return new Date(value); } else { return value; }}); document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
把字符串转换为函数:
var text = '{ "name":"Bill Gates", "age":"function () {return 62;}", "city":"Seattle"}'; var obj = JSON.parse(text); obj.age = eval("(" + obj.age + ")"); document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
您应该避免在 JSON 中使用函数,函数会丢失它们的作用域,而且您还需要使用 eval() 把它们转换回函数。
JSON.stringify()
JSON 的常规用途是同 web 服务器进行数据交换。
在向 web 服务器发送数据时,数据必须是字符串。
通过 JSON.stringify() 把 JavaScript 对象转换为字符串。
<!DOCTYPE html> <html> <body> <h1>从 JavaScript 对象创建 JSON 字符串</h1> <p id="demo"></p> <script> var obj = { name: "Bill", age: 62, city: "Seatle" }; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON; </script> </body> </html>
在 JSON 中,不允许函数作为对象值。
JSON.stringify() 函数将从 JavaScript 对象删除任何函数,包括键和值:
JSON 对象
{ "name":"Bill Gates", "age":62, "car":null }
JSON 对象被花括号 {} 包围。
JSON 对象以键/值对书写。
键必须是字符串,值必须是有效的 JSON 数据类型(字符串、数字、对象、数组、布尔或 null)。
键和值由冒号分隔。
每个键/值对由逗号分隔。
访问对象值
可以使用.或者是[]
比如x = myObj.name; x = myObj["name"];
遍历对象
for-in 遍历对象属性:
myObj = { "name":"Bill Gates", "age":62, "car":null }; for (x in myObj) { document.getElementById("demo").innerHTML += x; }
删除对象属性
使用 delete 关键词来删除 JSON 对象的属性:
实例
delete myObj.name;