JavaScript學習總結(六)資料型別和JSON格式

trigkit4發表於2016-09-16

什麼是JSON

JSON:JavaScript 物件表示法(JavaScript Object Notation)。

JSON的形式是用大括號“{}”包圍起來的專案列表,每一個專案間用逗號(,)分隔,而專案就是用冒號(:)分隔的屬性名和屬性值。這是典型的字典表示形式,也再次表明javascript裡的物件就是字典結構。不管多麼複雜的物件,都可以用一句JSON程式碼來建立並賦值。在JSON中,名稱/值對 包括欄位名稱(在雙引號中),後面寫一個冒號,然後是值

JSON 結構

JSON有兩種結構

json簡單說就是javascript中的物件和陣列,所以這兩種結構就是物件和陣列兩種結構,通過這兩種結構可以表示各種複雜的結構

1、物件:物件在js中表示為“{}”括起來的內容,資料結構為 {key:value,key:value,...}的鍵值對的結構,在物件導向的語言中,key為物件的屬性,value為對應的屬性值,所以很容易理解,取值方法為 物件.key 獲取屬性值,這個屬性值的型別可以是 數字、字串、陣列、物件幾種。

2、陣列:陣列在js中是中括號“[]”括起來的內容,資料結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,欄位值的型別可以是 數字、字串、陣列、物件幾種。
經過物件、陣列2種結構就可以組合成複雜的資料結構了。

JSON 語法規則

JSON 語法是 JavaScript 物件表示法語法的子集。

資料在名稱/值對中
資料由逗號分隔
花括號儲存物件
方括號儲存陣列

JSON 值可以是:

數字(整數或浮點數)
字串(在雙引號中)
邏輯值(true 或 false)
陣列(在方括號中)
物件(在花括號中)
null

除以上6種外,再無其他,沒有像js一樣的undefined、NAN

1) 並列的資料之間用逗號(", ")分隔。

2) 對映用冒號(": ")表示。

3) 並列資料的集合(陣列)用方括號("[]")表示。

4) 對映的集合(物件)用大括號("{}")表示。

物件是一套無序的名/值對,一個物件以左邊分支開始,以右邊分支結束

一個值可以是用雙引號括起來的字串,或者是一個數值,一個true or false ,一個陣列或者一個物件

JSON與物件字面量

在程式語言中,字面量是一種表示值的記法。

JSON規定鍵-值對中的必須用雙引號! 引號。例如:

{"first name" : "Mike"};

JSON字串中,不能使用函式或者正規表示式字面量

資料型別:

從結構上看,所有的資料(data)最終都可以分解成三種型別:

第一種型別是標量(scalar),也就是一個單獨的字串(string)或數字(numbers),比如"北京"這個單獨的詞。

第二種型別是序列(sequence),也就是若干個相關的資料按照一定順序並列在一起,又叫做陣列(array)或列表(List),比如"北京,上海"。

第三種型別是對映(mapping),也就是一個名/值對(Name/value),即資料有一個名稱,還有一個與之相對應的值,這又稱作雜湊(hash)或字典(dictionary),比如"首都:北京"。

在程式語言中,只要有了陣列(array)和物件(object)就能夠儲存一切資料了。

陣列和物件的另一個區別是,陣列的資料沒有”名稱”(name),物件的資料有”名稱”(name)。

JavaScript中有5種簡單資料型別(也稱為基本資料型別):UndefinedNullBooleanNumberString。還有1種複雜資料型別——ObjectObject本質上是由一組無序的名值對組成的。

對一個值使用typeof操作符可能返回下列某個字串:

"undefined"——如果這個值未定義;

"boolean"——如果這個值是布林值;

"string"——如果這個值是字串;

"number"——如果這個值是數值;

"object"——如果這個值是物件或null;

"function"——如果這個值是函式;

Undefined型別:

 `Undefined`型別只有一個值,在使用var宣告變數但未對其加以初始化時,
這個變數的值就是undefined

Null型別

Null型別是第二個只有一個值的資料型別,這個特殊的值是null。從邏輯角度來看,null值表示一個空物件指標,而這也正是使用typeof操作符檢測null時會返回”object”的原因,例如:

var car = null;
alert(typeof car); // "object"

Number型別

這種型別用來表示整數和浮點數值,還有一種特殊的數值,即NaN(非數值 Not a Number)。這個數值用於表示一個本來要返回數值的運算元未返回數值的情況(這樣就不會丟擲錯誤了)。

String型別

String型別用於表示由零或多個16位Unicode字元組成的字元序列,即字串。字串可以由單引號(‘)或雙引號(“)表示。

數值、布林值、物件和字串值都有toString()方法。但nullundefined值沒有這個方法。

多數情況下,呼叫toString()方法不必傳遞引數。但是,在呼叫數值的toString()方法時,可以傳遞一個引數:輸出數值的基數。

var num = 10;
alert(num.toString());      //"10"
alert(num.toString(2));     //"1010"
alert(num.toString(8));     //"12"
alert(num.toString(10));    //"10"
alert(num.toString(16));    //"a"

在不知道要轉換的值是不是nullundefined的情況下,還可以使用轉型函式String(),這個函式能夠將任何型別的值轉換為字串。String()函式遵循下列轉換規則:

  • 如果值有toString()方法,則呼叫該方法(沒有引數)並返回相應的結果
  • 如果值是null,則返回”null
  • 如果值是undefined,則返回”undefined

Object型別

物件其實就是一組資料和功能的集合。物件可以通過執行new操作符後跟要建立的物件型別的名稱來建立。而建立Object型別的例項併為其新增屬性和(或)方法,就可以建立自定義物件。

var o = new Object();

typeof 操作符

<script type="text/javascript">
    var s = "Nicholas";
    var b =true;
    var c = 21;
    var u;
    var n = null;
    var o = {};
    var obj = new Object;//最好寫出new object()形式

    alert(typeof s);//string
    alert(typeof b);//boolean
    alert(typeof c);//number
    alert(typeof u);//undefined
    alert(typeof n);//object
    alert(typeof o);//object
    alert(typeof obj);//object
</script>

Json線上解析

Json線上解析:http://json.tongxiehui.net/

JavaScript學習系列文章目錄

相關文章