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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章