閱讀397 返回首頁    go 微軟 go Office


JSON 基礎知識總結

JSON是什麼

JSON,說白了就是JavaScript用來處理數據的一種格式,這種格式非常簡單易用。JSON大部分都是用來處理JavaScript和web服務器端之間的數據交換,把後台web服務器的數據傳遞到前台,然後使用JavaScript進行處理,例如ajax等

JSON支持的語言非常多,包括JavaScript、C#、PHP、Java等等,這是由於JSON獨立於語言的輕量級的數據交換格式,這個特點有點類似於SQL語言

JSON的結構

JSON結構共有2種:無序的對象結構、有序的數組結構;

無序的對象結構

對象結構是使用大括號“{}”括起來的,大括號內是由0個或多個用英文逗號分隔的“關鍵字:值”對(key:value)構成的

var jsonObj = {
    "鍵名1":值1,
    "鍵名2":值2,
    ……
    "鍵名n":值n
}

這裏的鍵名是字符串,但是值可以是數值、字符串、對象、數組或邏輯true和false

有序的數組結構

JSON數組結構是用中括號“[]”括起來,中括號內部由0個或多個以英文逗號“,”分隔的值列表組成

var arr =
[
    {
        "鍵名1":值1,
        "鍵名2":值2
    },
    {
        "鍵名3":值3,
        "鍵名4":值4
    },
    ……
]

在JSON數組中,每一對“{}”相當於一個JSON對象

JSON 數據格式

JSON是JavaScript Object Notation的簡稱,是一種輕量的數據表示方法。json格式采用key:value的方式記錄數據,非常直觀,比XML簡潔,因而大受歡迎

添加 JSON

簡單地說,JSON 可以將 JavaScript 對象中表示的一組數據轉換為字符串,然後就可以在函數之間輕鬆地傳遞這個字符串,或者在異步應用程序中將字符串從 Web 客戶端傳遞給服務器端程序。這個字符串看起來有點兒古怪,但是 JavaScript 很容易解釋它,而且 JSON 可以表示比名稱/值對更複雜的結構。例如,可以表示數組和複雜的對象,而不僅僅是鍵和值的簡單列表

值的數組

當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少複雜性

{ "people": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

掌握了JSON格式後,在JavaScript中將JSON數據賦值給變量就很簡單了。JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數據不需要任何特殊的 API 或工具包

例如,可以創建一個新的JavaScript變量,然後將 JSON 格式的數據字符串直接賦值給它

var people = { "people": [
   { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
   { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
   { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
 ],
 "authors": [
    { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
    { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
    { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
   ]
}

訪問數據

實際上,隻需用點號表示法來表示數組元素。所以,要想訪問 people 列表的第一個條目的姓氏,隻需在 JavaScript 中使用下麵這樣的代碼:

people.people[0].lastName;

利用這樣的語法,可以處理任何 JSON 格式的數據

轉換回字符串

String newJSONtext = people.toJSONString();

可以將任何 JavaScript 對象轉換為 JSON 文本

JSON 數據類型

JSON 格式支持以下數據類型:

類型 描述
數字型(Number) JavaScript 中的雙精度浮點型格式
字符串型(String) 雙引號包裹的 Unicode 字符和反斜杠轉義字符
布爾型(Boolean) true 或 false
數組(Array) 有序的值序列
值(Value) 可以是字符串,數字,true 或 false,null 等等
對象(Object) 無序的鍵:值對集合
空格(Whitespace) 可用於任意符號對之間
null

數字型

JavaScript 中的雙精度浮點型格式,取決於實現。不能使用八進製和十六進製格式,在數字中不能使用 NaN 和 Infinity

下表展示了數字類型:

類型 描述
整形(Integer) 數字1-9,0和正負數
分數(Fraction) 分數,比如 .3,.9
指數(Exponent) 指數,比如 e,e+,e-,E,E+,E-

字符串型

零個或多個雙引號包裹的 Unicode 字符以及反斜杠轉義序列

字符就是隻有一個字符的字符串,長度為 1

下表展示了字符串類型:

類型 描述
" 雙引號
\ 反斜線
/ 斜線
b 退格符
f 換頁符
n 換行符
r 回車符
t 水平製表符
u 四位十六進製數字

布爾型

包含 true 和 false 兩個值

數組

它是一個有序的值集合,使用方括號閉合,這意味著數組以 [ 開始,以 ] 結尾,值使用 ,(逗號)分割,數組索引可以以 0 或 1 開始,當鍵名是連續的整數時應該使用數組

{
    "books": [
        { "language":"Java" , "edition":"second" },
        { "language":"C++" , "lastName":"fifth" },
        { "language":"C" , "lastName":"third" }
    ]
}

對象

它是一個無序的名/值對集合,對象使用大括號閉合,以 '{' 開始,以 '}' 結尾,每個名稱後麵都跟隨一個 ':'(冒號),名/值對使用,(逗號)分割,鍵名必須是字符串並且不能同名,當鍵名是任意字符串時應該使用對象

{
    "id": "011A",
    "language": "JAVA",
    "price": 500,
}

創建簡單的對象

JSON對象可以使用JavaScript創建。我們來看看使用 JavaScript 創建 JSON 對象的各種方式:

1.創建一個空對象:

var JSONObj = {};

2.創建一個新對象:

var JSONObj = new Object();

3.創建一個 bookname 屬性值為字符串,price屬性值為數字的對象。可以通過使用 '.' 運算符訪問屬性

var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };

創建數組對象

var books = {
    "Pascal" : [ 
        { "Name"  : "Pascal Made Simple", "price" : 700 },
        { "Name"  : "Guide to Pascal", "price" : 400 }
    ],                       
    "Scala"  : [
        { "Name"  : "Scala for the Impatient", "price" : 1000 }, 
        { "Name"  : "Scala in Depth", "price" : 1300 }
    ]    
}    

var i = 0
document.writeln("<table border='2'><tr>");
for(i=0;i<books.Pascal.length;i++)
{   
    document.writeln("<td>");
    document.writeln("<table border='1' width=100 >");
    document.writeln("<tr><td><b>Name</b></td><td width=50>" + books.Pascal[i].Name+"</td></tr>");
    document.writeln("<tr><td><b>Price</b></td><td width=50>" + books.Pascal[i].price +"</td></tr>");
    document.writeln("</table>");
    document.writeln("</td>");
}
document.writeln("</tr></table>");

空格

可以在任意一對符號之間插入。可以添加用來讓代碼更可讀

null

意味著空類型

var i = null;
if(i==1) {
    document.write("<h1>value is 1</h1>");  
} else {
    document.write("<h1>value is null</h1>");
}

JSON 值

包括:數字(整型和浮點型)、字符串、布爾值、數組、對象、null

var i =1;
var j = "sachin";
var k = null;

最後更新:2017-05-17 10:31:16

  上一篇:go  CMU機器學習學院院長Tom Mitchell:計算機模擬人腦才剛剛起步
  下一篇:go  WannaCry隻是個開始?信息時代你急需的安全書單