JSON语法解析

JSON语法

JSON三种类型值

  • 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但JSON不支持JavaScript的特殊值undefined.

如JSON表示字符串的方式:

Hello World!
  • 对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。

JSON中的对象与JavaScript字面量稍微有一些不同。下面是JavaScript中的对象表示方法:

     var person = {
         name: "HuangAn",
         age: 23
     };

JSON的表示法如下:

    {
        "name": "HuangAn",
        "age": 23
    }
  • 数组:数组也是一种复杂数据类型,表示一组有序值列表,可以通过索引来访问数组元素,数组的值可以是简单值、对象或数组。

注意:JSON数组也没有变量和分号。如下所示:

    [
       {
         "title": "professional JavaScript",
         "authors": [
         "Nicholas"
         ],
         edition: 3,
         year: 2011
       },
       {
          "title": "professional Ajax",
         "authors": [
          "Nicholas",
          "Joe Fawcett"
          ],
         edition: 2,
         year: 2008
       }
    ]

JSON解析与序列化

JSON之所以流行,是因为它可以把JSON数据结构解析为有用的JavaScript对象。与XML数据结构要解析成DOM文档而且从中提取数据极为麻烦相比,JSON可以解析成JavaScript对象的优势极为明显。

JSON对象

JSON解析器基本上是使用JavaScript的eval()函数,因此eval()函数可以解析、解释并返回JavaScript对象和数组。JSON对象有两个方法:stringify()和parse()。在简单情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。这两个函数是逆序的过程。

如:

     var book = {
         title: "professional JavaScript",
         authors: 
         [
             "Nicholas"
         ],
         edition: 3,
         year: 2011
       };
     var jsonText = JSON.stringify(book);

最后的结果是JSON字符串,如下所示:

      {
         “title”: "professional JavaScript",
         “authors”: 
         [
             "Nicholas"
         ],
         “edition”: 3,
         “year”: 2011
      }

而JSON.parse()方法则是相反的过程。

序列化选项

实际上,JSON.stringify()除了要序列化JavaScript对象之外,还可以接收另外两个参数。第一个参数是一个过滤器,可以使一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。示例分别如下:

1、过滤结果

    var jsonText = JSON.stringify(book,["title","edition"]);
    {“title”:"professional JavaScript","edition"3}

2、字符串缩进

    var jsonText = JSON.stringify(book,null,"- -");
    {
      --“title”: "professional JavaScript",
      -- “authors”: [
      ---- "Nicholas"
      --],
      --“edition”: 3,
      --“year”: 2011
       }
发布了44 篇原创文章 · 获赞 1 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章