理解JSON的语法

JSON语法可以分为三种类型:

简单值

对象

数组

简单值:

5
"Hello World"

JavaScript字符串与JSON字符串的最大区别在于,JSON字符串必须使用双引号

对象:

JSON中的对象与JavaScript字面量稍微有一些不同。下面是一个JavaScript中的对象字面量

var person={
            name:"Qianwei",
            age:22
}

这虽然是开发人员在JavaScript中创建对象字面量的标准方式,但JSON中的对象要求给属性加引号。

{
            "name":"Qianwei",
            "age":22
}

与JavaScript的对象字面量相比,JSON对象有两个地方不一样。首先,没有申明变量(JSOn中没有变量的概念)。其次,没有末尾的分号(因为这不是JavaScript语句,所以不需要分号)。再说一遍,对象的属性必须加引号,这在JSON中是必须的。属性的值可以是简单值,也已是复杂类型值。

{
    "name": "Qianwei",
    "age": 22,
    "school": {
        "name": "anqing",
        "lOaction": "Anqing"
    }
}

这个例子在顶级对象中嵌入了学校信息。虽然有两个“name”属性,但是是不一样的。

数组:

JSON中的第二种复杂数据类型是数组。JSON数组采用的就是JavaScript中的数组字面量形式:

var value = [25,"hi",true]

在JSON中,可以采用同样的语法表示同一个数组:

[{
        "title": "Pro",
        "author": "Qianwe",
        "edition": 3,
        "year": 2100
    },
    {
        "title": "Pro",
        "author": "Qianwe",
        "edition": 4,
        "year": 2100
    },
    {
        "title": "Pro",
        "author": "Qianwe",
        "edition": 2,
        "year": 2100
    }
]

解析和序列化:

可以把JSON数据结构解析为有用的JavaScript对象。

[{
        "title": "Pro",
        "author": "Qianwe",
        "edition": 3,
        "year": 2100
    },
    {
        "title": "Pro1",
        "author": "Qianwe",
        "edition": 4,
        "year": 2100
    },
    {
        "title": "Pro2",
        "author": "Qianwe",
        "edition": 2,
        "year": 2100
    }
]

------------------------------------------------------------
books[2].title                //pro2

JSON对象:

JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生的JavaScript值。

    var books = {
        "title": "Pro",
        "author": "Qianwe",
        "edition": 4,
        "year": 2100
    };

    var jsonText = JSON.stringify(books);

    console.log(jsonText)       //{"title":"Pro","author":"Qianwe","edition":4,"year":2100}
    console.log(typeof jsonText)        //string
var books = {
        "title": "Pro",
        "author": "Qianwe",
        "edition": 4,
        "year": 2100
    };

    var jsonText = JSON.stringify(books);

    console.log(jsonText) //{"title":"Pro","author":"Qianwe","edition":4,"year":2100}
    console.log(typeof jsonText) //string

    var parseText = JSON.parse(jsonText);
    console.log(parseText)
        /*
        {title: "Pro", author: "Qianwe", edition: 4, year: 2100}
            author
            :
            "Qianwe"
            edition
            :
            4
            title
            :
            "Pro"
            year
            :
            2100
            __proto__
            :
            Object
        */
    console.log(typeof parseText) //object

 

posted @ 2018-02-27 21:49  BluesQian  阅读(1056)  评论(0编辑  收藏  举报