天天看點

Json

Json文法

  • 資料使用名:值對表示
  • 使用{}儲存對象,每個名稱後面跟着一個‘:’(冒号),名/值對使用,(逗号)分割
  • 使用【】儲存數組,數組值使用,(逗号)分割。
  • 簡單例子
{
  "book" : [
                        {
                                "id" : "01",
                                "language" : "java",
                                "edition" : "third"
                        },
                        {
                                "id" : "02",
                                "language" : "c++",
                                "edition" : "sencond"
                        } ]               
}
           
  • Json支援一下兩種資料結構

名/值對集合:這一資料結構由不同的程式設計語言支援

有序的值清單:包括數組、清單、向量或序列等等。

Json的文法規則

Json文法是JavaScript對象表示法文法的子集

Json文法規則不複雜,它參考了C語言家族的一些習慣,學習起來并不感到陌生。

  • 資料在 名稱/值對中
  • 資料由逗号分隔
  • 花括号儲存對象
  • 方括号儲存數組
  • 書寫格式

名稱:值對

注意:

名稱:值對包括字段名稱(在雙引号中),後面寫一個冒号,然後就是值

例:

"firstName" : "Json"

Json的值

可以是:

  • 數字(整數或浮點數)
  • 字元串(在雙引号中)
  • 邏輯值(true或false)
  • 數組(在方括号中)
  • 對象(在花括号中)
  • null

Json對象

  • Json對象在花括号中書寫
  • 對象可以包含多個名稱 / 值對

    例如:

{
"firstName" : "JavaScript" , "lastName" : "Json"
}
           

Json數組

  • Json數組在方括号中書寫:
  • 數組可以包含多個對象:
{
"employees" : [
  {
  "firstName" : "John" , "lastName" : "Doe"
  },
  {
"firstName" : "Anna" , "lastName" : "Smith"
  }]
}
           
上面的例子中,對象employees是包含了兩個對象的數組,每一個對象代表一條關于某人(有名和姓)的記錄

Json使用JavaScript文法

因為Json使用JavaScript文法,是以無需額外的軟體就能處理JavaScript中的Json
var employees = [
  {
  "firstName" : "John" , "lastName" : "Doe"
  },
  {
"firstName" : "Anna" , "lastName" : "Smith"
  }
];
           
  • 通路如下:
employees[0].lastName;
           
  • 修改如下:
employees[0].lastName = "Jonse";
           

Json使用

Json經常應用到的場景是:

在背景應用程式中将響應資料封裝成Json格式,傳到前台之後,需要将Json格式轉換為JavaScript對象,然後再網頁中使用該資料。

把Json文本轉換為JavaScript對象

Json最常見的用法之一,是從web伺服器上讀取Json資料(作為檔案或作為HttpRequest),将Json資料轉換為JavaScript對象,然後再網頁上使用該資料。
  • 建立包含Json文法的JavaScript字元串
var txt = '{
"employees" : [ ' +
' { "firstName" : "John" ,
"lastName" : "Anna"
},' + 
'{ "firstName" : "Smith" ,
"lastName" : "Peter" 
}
]
}'
           

由于Json是JavaScript文法的子集,JavaScript函數eval()可用于将Json文本轉換為JavaScript對象。

eval()函數使用的是JavaScript編譯器,可解析Json文本,然後生成JavaScript對象,必須把文本包圍在括号中,這樣才能避免文法錯誤。

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

在網頁中使用JavaScript對象:
<p>
  firstName : <span id = "fname"></span><br />
lastName : <span id = "lname"></span><br />
</p>
<script>
document.getElementById("fname").innerHTML = obj.employees[1].firstName
document.getElementById("lname").innerHTML = obj.employees[1].lastName
</script>