JSON

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;

JSON 数组

您可以通过使用索引号来访问数组值:

您可以通过使用 for-in 循环来访问数组值:

或者您可以使用 for 循环:

删除数组项目

请使用 delete 关键词来删除数组中的项目:

实例

delete myObj.cars[1];
原文地址:https://www.cnblogs.com/Galesaur-wcy/p/15119866.html