成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

高程3總結(jié)#第20章JSON

Hwg / 761人閱讀

摘要:語法語法可以表示三種類型的值簡單值使用與相同的語法,可以在中表示字符串?dāng)?shù)值布爾值和。對(duì)象對(duì)象作為一種復(fù)雜數(shù)據(jù)類型,表示的是一組無序的鍵值對(duì)兒。如果字符串長度超過了個(gè),結(jié)果中將只出現(xiàn)前個(gè)字符。

JSON 語法

JSON語法可以表示三種類型的值

簡單值:使用與 JavaScript 相同的語法,可以在 JSON 中表示字符串、數(shù)值、布爾值和 null 。但 JSON 不支持 JavaScript 中的特殊值 undefined 。

對(duì)象:對(duì)象作為一種復(fù)雜數(shù)據(jù)類型,表示的是一組無序的鍵值對(duì)兒。而每個(gè)鍵值對(duì)兒中的值可以是簡單值,也可以是復(fù)雜數(shù)據(jù)類型的值。

數(shù)組:數(shù)組也是一種復(fù)雜數(shù)據(jù)類型,表示一組有序的值的列表,可以通過數(shù)值索引來訪問其中的值。數(shù)組的值也可以是任意類型——簡單值、對(duì)象或數(shù)組。

簡單值

最簡單的JSON數(shù)據(jù)形式,數(shù)值5,字符串“Hello world”

JavaScript字符串與JSON字符串最大區(qū)別在于,JSON字符串必須使用雙引號(hào)

布爾值和null也是有效的JSON形式

對(duì)象
//JavaScript對(duì)象
var object = {
"name": "Nicholas",
"age": 29
};
//JSON對(duì)象
{
"name": "Nicholas",
  "age": 29
}
//JSON中對(duì)象嵌入對(duì)象
{
"name": "Nicholas",
  "age": 29,
    "school": {
      "name": "Merrimack College",
        "location": "North Andover, MA"
    }
}
數(shù)組

JSON數(shù)組沒有變量和分號(hào)

[
  {
    "title": "Professional JavaScript",
    "authors": [
      "Nicholas C. Zakas"
    ],
    edition: 3,
    year: 2011
  },
  {
    "title": "Professional JavaScript",
    "authors": [
      "Nicholas C. Zakas"
    ],
    edition: 2,
    year: 2009
  },
  {
    "title": "Professional Ajax",
    "authors": [
      "Nicholas C. Zakas",
      "Jeremy McPeak",
      "Joe Fawcett"
    ],
    edition: 2,
    year: 2008
  },
  {
    "title": "Professional Ajax",
    "authors": [
      "Nicholas C. Zakas",
      "Jeremy McPeak",
      "Joe Fawcett"
    ],
    edition: 1,
    year: 2007
  },
  {
    "title": "Professional JavaScript",
    "authors": [
      "Nicholas C. Zakas"
    ],
    edition: 1,
    year: 2006
  }
]

解析與序列化 JSON對(duì)象

早期的JSON解析器基本上就是使用JavaScript的eval()函數(shù)

JSON對(duì)象有兩個(gè)方法:stringify()和parse(),在最簡單情況下,兩個(gè)方法分別用于把JavaScript對(duì)象序列化為JSON字符串和把JSON字符串解析為原生JavaScript值

var book = {
  title: "Professional JavaScript",
  authors: [
    "Nicholas C. Zakas"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book);
//得到的結(jié)果為
{"title":"Professional JavaScript","authors":["Nicholas C. Zakas"],"edition":3,
  "year":2011}
//反向操作
var bookCopy = JSON.parse(jsonText);

序列化選項(xiàng)

JSON.stringify() 除了要序列化的 JavaScript 對(duì)象外,還可以接收另外兩個(gè)參數(shù),這兩個(gè)參數(shù)用于指定以不同的方式序列化 JavaScript 對(duì)象。第一個(gè)參數(shù)是個(gè)過濾器,可以是一個(gè)數(shù)組,也可以是一個(gè)函數(shù);第二個(gè)參數(shù)是一個(gè)選項(xiàng),表示是否在 JSON 字符串中保留縮進(jìn)。

var book = {
  "title": "Professional JavaScript",
  "authors": [
    "Nicholas C. Zakas"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, ["title", "edition"]);
//結(jié)果為
{"title":"Professional JavaScript","edition":3}
//結(jié)果為undefined的例子
var book = {
  "title": "Professional JavaScript",
  "authors": [
    "Nicholas C. Zakas"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, function(key, value){
  switch(key){
    case "authors":
      return value.join(",")
    case "year":
      return 5000;
    case "edition":
      return undefined;
    default:
      return value;
  }
});
//結(jié)果為
{"title":"Professional JavaScript","authors":"Nicholas C. Zakas","year":5000}

JSON.stringify() 方法的第三個(gè)參數(shù)用于控制結(jié)果中的縮進(jìn)和空白符。如果這個(gè)參數(shù)是一個(gè)數(shù)值,那它表示的是每個(gè)級(jí)別縮進(jìn)的空格數(shù)

var book = {
  "title": "Professional JavaScript",
  "authors": [
    "Nicholas C. Zakas"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, null, 4);
//結(jié)果如下
{
  "title": "Professional JavaScript",
    "authors": [
      "Nicholas C. Zakas"
    ],
      "edition": 3,
        "year": 2011
}

如果縮進(jìn)參數(shù)是一個(gè)字符串而非數(shù)值,則這個(gè)字符串將在 JSON 字符串中被用作縮進(jìn)字符(不再使用空格)縮進(jìn)字符串最長不能超過 10 個(gè)字符長。如果字符串長度超過了 10 個(gè),結(jié)果中將只出現(xiàn)前 10 個(gè)字符。

var jsonText = JSON.stringify(book, null, " - -");
//結(jié)果如下
{
  --"title": "Professional JavaScript",
    --"authors": [
      ----"Nicholas C. Zakas"
      --],
      --"edition": 3,
        --"year": 2011
}

toJson()方法,返回其自身的JOSN數(shù)據(jù)格式

var book = {
  "title": "Professional JavaScript",
  "authors": [
    "Nicholas C. Zakas"
  ],
  edition: 3,
  year: 2011,
  toJSON: function(){
    return this.title;
  }
};
var jsonText = JSON.stringify(book)

解析選項(xiàng)

JSON.parse()方法也可以接收另一個(gè)參數(shù),該參數(shù)是一個(gè)函數(shù),將在每個(gè)鍵值對(duì)上調(diào)用

var book = {
  "title": "Professional JavaScript",
  "authors": [
    "Nicholas C. Zakas"
  ],
  edition: 3,
  year: 2011,
  releaseDate: new Date(2011, 11, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText, function(key, value){
  if (key == "releaseDate"){
    return new Date(value);
  } else {
    return value;
  }
});
alert(bookCopy.releaseDate.getFullYear())

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98058.html

相關(guān)文章

  • 高程3總結(jié)#17錯(cuò)誤處理與調(diào)試

    錯(cuò)誤處理與調(diào)試 錯(cuò)誤處理 try-catch語句 try{ //可能會(huì)導(dǎo)致錯(cuò)誤的代碼 }catch(error){ //在錯(cuò)誤發(fā)生時(shí)怎么處理 } 發(fā)生錯(cuò)誤時(shí)可以顯示瀏覽器給出的信息 try{ window.someNonexistentFunction(); }catch(error){ alert(error.message); } 在try-catch語句中是可選的,但...

    fizz 評(píng)論0 收藏0
  • 高程3總結(jié)#4變量、作用域和內(nèi)存問題

    摘要:當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈。作用域鏈的用途,是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問。這樣,一直延續(xù)到全局執(zhí)行環(huán)境全局執(zhí)行環(huán)境的變量對(duì)象始終都是作用域鏈中的最后一個(gè)對(duì)象。 變量、作用域和內(nèi)存問題 基本類型和引用類型的值 基本類型值指的是簡單的數(shù)據(jù)段,而引用類型值值那些可能由多個(gè)值構(gòu)成的對(duì)象。 定義基本類型值的引用和引用類型值的方法是類似的,創(chuàng)建...

    xumenger 評(píng)論0 收藏0
  • 高程3總結(jié)#3基本概念

    摘要:基本概念語法區(qū)分大小寫,中的一切變量函數(shù)名和操作符都區(qū)分大小寫。要將一個(gè)值轉(zhuǎn)換成對(duì)應(yīng)的值,可以調(diào)用類型包括整數(shù)和浮點(diǎn)數(shù)值,基本數(shù)值字面量格式是十進(jìn)制整數(shù),除了十進(jìn)制外還有八進(jìn)制十六進(jìn)制。八進(jìn)制第一位必須是,十六進(jìn)制第一位必須是。 基本概念 語法 區(qū)分大小寫,ECMAScript中的一切(變量、函數(shù)名和操作符)都區(qū)分大小寫。函數(shù)名不能使用typeof,因?yàn)樗且粋€(gè)關(guān)鍵字,但typeOf...

    Rindia 評(píng)論0 收藏0
  • 高程3總結(jié)#8BOM

    摘要:對(duì)象的核心對(duì)象是,它表示瀏覽器的一個(gè)實(shí)例。而和則表示該容器中頁面視圖區(qū)的大小。在中,與返回相同的值,即視口大小而非瀏覽器窗口大小。第三個(gè)參數(shù)是一個(gè)逗號(hào)分隔的設(shè)置字符串,表示在新窗口中都顯示哪些特性。這應(yīng)該是用戶打開窗口后的第一個(gè)頁面 BOM window對(duì)象 BOM的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window對(duì)象有雙重角色,它既是通過JavaScript訪...

    MASAILA 評(píng)論0 收藏0
  • 高程3總結(jié)#7函數(shù)表達(dá)式

    摘要:匿名函數(shù)可以用來模仿塊級(jí)作用域來避免這個(gè)問題這里是塊級(jí)作用域代碼定義并立即調(diào)用了一個(gè)匿名函數(shù),將函數(shù)聲明包含在一對(duì)圓括號(hào)中,表示它實(shí)際上是一個(gè)函數(shù)表達(dá)式,而緊隨其后的另一對(duì)圓括號(hào)會(huì)立即調(diào)用這個(gè)函數(shù)。 函數(shù)表達(dá)式 遞歸 遞歸函數(shù)是在一個(gè)函數(shù)通過名字調(diào)用自身的情況下構(gòu)成的 function factrial(num){ if(num

    sevi_stuo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Hwg

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<