JSON詳解

ii_chengzi發表於2019-10-06

1.什麼是json?

JSON全稱是JavaScript Object Notation,是一種輕量級的資料交換格式。JSON 與XML具有相同的特性,是一種資料儲存格式,但是JSON相比XML 更易於人編寫和閱讀,更易於生成和解析。

2.JSON的語法規則:

1)資料以名稱/值對的形式儲存,名稱/值對包括欄位名稱(在雙引號中),後面寫一個冒號,然後是值,如 :"firstName" : "John"。JSON的值可以是數字、字串、null、true、false、陣列或物件。

2)資料有都好分隔

3)花括號儲存物件,物件可以包含多個名/值對。

4)方括號儲存陣列,陣列可以包含多個物件。

5)JSON檔案:

JSON 檔案的檔案型別是 ".json"

JSON 文字的 MIME 型別是 "application/json"

3.JSON 的兩種結構:

1)鍵值對形式,即Name-Value對的結構結構集合(無序的 )。如:{name1:value1.name2:value2,...};

{"name":"小明","age":"12"}

2)Array(有序的):一組有序的資料列表。例如:[value1,value2,value3,.....],其中,值可以是雙引號引起來的字串(string)、數值(number)、true、false、null、物件(object)或者陣列(Array),這些結構都是可以巢狀的。如:

例一:物件中可以包含陣列

{"root":[{"id":"001","name":"小紅"},{"id":"002","name":"小明"},{"id":"003","name":"小麗"}],"total":3,"success":true}

例二:也可以物件巢狀子物件,子物件再巢狀陣列:

{"memberList":{"lists":[{"id":"001","name":"小紅"},{"id":"002","name":"小明"},{"id":"003","name":"小麗"}]}}

例三:陣列中可以包含物件:

[{"id":"001","name":"小紅"},{"id":"002","name":"小明"},{"id":"003","name":"小麗"},........]

4.JSON 的取值方式和修改方式:

如:

var employees = [

{ "firstName":"Bill" , "lastName":"Gates" },

{ "firstName":"George" , "lastName":"Bush" },

{ "firstName":"Thomas" , "lastName": "Carter" }

];

取值:employees[0].lastName

修改資料:employees[0].lastName="Jobs"

5.JSON與字串之間的轉化方法:

JSON轉換為字串(string)格式:var string=JSON.stringify(obj);

將Json字串轉換為JSON:

(1)var data=JSON.parse(string);

function strToJson(){

return JSON.parse(str);

}

使用JSON.parse需嚴格遵守JSON規範,如屬性都需要用引號引起來,否則會出錯,如下:

var str = '{name:"jack"}';

var obj = JSON.parse(str); // --> parse error

name沒有用引號引起來,使用JSON.parse所有瀏覽器中均拋異常,解析失敗。(下面這兩種方式則沒有問題)

(2)eval(string);

例如:function myEval(){

var str='{"id":"001","name":"小明","age":10}';

var obj=eval('('+str+')');

alert(obj.toJSONString());

}

(3) new Function形式

function strToJson(str){

var json=(new Function("return"+str))();

}

(4)jQuery中也有將字串轉為JSON格式的方法jQuery.parseJSON( json ),接受一個標準格式的 JSON 字串,並返回解析後的 JavaScript (JSON)物件

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2658915/,如需轉載,請註明出處,否則將追究法律責任。

相關文章