JSON 语法

一、JSON: JavaScript Object Notation (JavaScript 对象表示法)。

      JSON是存储和交换文本信息的语法。

      JSON独立于语言*

1 {
2     “sites”:[
3         {'name':'菜鸟教程'  , 'url':'www.runoob.com'},
4     ]
5 }

  JSON转换为 JavaScript 对象

    JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。

    由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

  使用JSON

    读取JSON字符串;

           用eval()处理JSON字符串。

 

二、JSON语法

     JSON语法是JavaScript语法的子集。

    语法规则:

                数据在键值对中

                数据由逗号隔开

               大括号保存对象

                中括号保存数组

     JSON值:

                数字、字符串、布尔值、数组、对象、null

 

三、JSON对象

{ "name":"runoob", "alexa":10000, "site":null }

    访问对象值:

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj.name;

x = myObj["name"];

  循环对象:

1 var myObj = { "name":"runoob", "alexa":10000, "site":null };
2 for (x in myObj) {
3     document.getElementById("demo").innerHTML += x + "<br>";
4 }

     嵌套JSON对象:[JSON对象中可以嵌套JSON对象]

 1 myObj = {
 2     "name":"runoob",
 3     "alexa":10000,
 4     "sites": {
 5         "site1":"www.runoob.com",
 6         "site2":"m.runoob.com",
 7         "site3":"c.runoob.com"
 8     }
 9 }
10 
11 //访问
12 x = myObj.sites.site1;
13 // 或者
14 x = myObj.sites["site1"];

     修改JSON对象:

1 myObj.sites.site1 = "www.google.com";
2 3 myObj.sites["site1"] = "www.google.com";

    删除JSON对象:

 1 delete myObj.sites.site1; 2 3 delete myObj.sites["site1"] 

四、数组类同

五、JSON.parse()

      JSON与服务器交换数据,接受的一般是字符串。可以使用JSON.parse()将数据转换为JavaScript对象。

  

JSON.parse(text);

  

<p id="demo"></p>
 
<script>
var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;
</script>

  从服务器端接受JSON:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myObj = JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML = myObj.name;
    }
};
xmlhttp.open("GET", "/try/ajax/json_demo.txt", true);
xmlhttp.send();

  从服务器端接受数组JSON:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myArr = JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML = myArr[1];
    }
};
xmlhttp.open("GET", "/try/ajax/json_demo_array.txt", true);
xmlhttp.send();

  

JSON 不能存储 Date 对象。

如果你需要存储 Date 对象,需要将其转换为字符串。

之后再将字符串转换为 Date 对象。

var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.initDate = new Date(obj.initDate);
 
document.getElementById("demo").innerHTML = obj.name + "创建日期: " + obj.initDate;

  JSON 不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。

var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.alexa = eval("(" + obj.alexa + ")");
 
document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();

 

六、JSON.stringify  [将JavaScript对象转化为JSON字符串]

JSON.stringify(value[, replacer[, space]])

  由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

var obj = eval ("(" + txt + ")");

  

 

posted @ 2017-03-07 17:32  Geek时光  阅读(275)  评论(0编辑  收藏  举报