JSON格式資料

2022-08-26 04:06:09 字數 4371 閱讀 2697

1. 什麼是json格式?

json格式是現在**資料互動的標準資料格式,寫入標準。

2. 合格的json資料

1.物件

1)屬性名必須是雙引號的字串;不能是symbol型別;會被忽略

2)屬性值不能是date型別、函式、正規表示式、undefined、nan、infinity、-infinity

json.stringify(value)的作用是將值轉化為json的字串形式。

json.stringify();

//""

//new date()由於tojson()方法的存在,由物件變成了字串型別,date.parse()無法復原json

json.stringify(); //

"{}" symbol的屬性被忽略

json.stringify(}); //

"{}" function的屬性值被忽略

json.stringify(); //

"{}" undefined的屬性值被忽略

json.stringify(); //

"}" 正規表示式被解析成{}

json.stringify(); //

"" nan被解析成null

json.stringify(); //

"" infinity被解析成null

json.stringify(); //

"" -infinity被解析成null

3)屬性值如果含有字串,必須全部是雙引號

var obj=  

}json.stringify(obj);

/*標準的json格式如下:

"}"

*/

4)物件不能迴圈引用,否則無法解析

let obj =

let obj2 = ;

obj.c =obj2;

obj2.d =obj;

json.stringify(obj2);

//uncaught typeerror: converting circular structure to json

5) 合格的json格式資料最後乙個元素後面不能有,

json.stringify(); //

"" 轉為json格式,逗號消失,說明json不能有逗號

2. 陣列

陣列的元素不能是date,symbol,regexp,function,nan,undefined,infinity,-infinity。

除了正規表示式會被解析成,  其餘6個都會被解析成null

最後乙個元素後面不能有逗號(,)

json.stringify([symbol(), undefined, nan, infinity,-infinity,function(){}, /a/]);

//

"[null,null,null,null,null,null,{}]"

3. 原始資料型別

字串、數字(十進位制)、布林值、null

json.stringify('true');//

""true"" 將字串單引號變為雙引號,再字串化

json.stringify('true') === "\"true\"" ;//

true

json.stringify(0x99); //

"153" 不能是十進位制以外的數字,會被自動轉為十進位制,通過json.parse()無法還原

json.stringify(99); //

"99"

json.stringify(true); //

"true"

json.stringify(null); //

"null"

❎不能是:symbol、undefined、nan、infinity、-infinity

前兩個會被忽略,和空函式一樣,預設返回undefined

後面的會被解析成null

json.stringify(symbol()); //

undefined

json.stringify(undefined);//

undefined

json.stringify(nan); //

"null"

json.stringify(infinity); //

"null"

json.stringify(-infinity); //

"null"

該方法將任意型別的值,轉為json物件的字串格式。

1)如果物件有自定義的tojson方法,value將是tojson的返回值

date物件原生含有tojson()方法。將物件轉為字串,所以date物件不能作為json格式的值。

//

自定義tojson()方法

var obj=

}};json.stringify(obj);

//""

2)當value是物件時,會過濾掉不可遍歷屬性

var obj ={};

object.defineproperties(obj, ,

"bar":

});obj;

//""

3) 第二個引數可以是陣列,只有當value是物件時,表示可以遍歷的屬性;

起過濾作用! 可以過濾掉迴圈引用的屬性。

var obj =,

bar: ,

tar: 7};

json.stringify(obj, ['foo']); //

"}" 因為第二個引數規定了只序列化foo屬性,巢狀的屬性也適用該規則

第二個引數還可以是函式function(key,value){},用於處理資料;而且可以遞迴處理所有的屬性。

該函式預設形式是:

funtion(key,value)

不論第乙個引數是什麼型別的值,函式第一次處理的key都沒有對應,value是本身;

如果返回的value值不是原始資料型別,則遞迴呼叫函式,函式對應的處理物件都是上次返回的結果。

a. 當value是物件時,key,value對應物件的鍵值對

json.stringify(, function

(key,value) )

//""

//key= value=

//key= a value= 1

//key= b value= 2

json.stringify(, function

(key,value)

return

value;

});

//""

b. 當value是陣列時,key對應陣列下標, value對應值

json.stringify([1,2], function

(key,value))

//"[1,2]"

//key= value= [1, 2]

//key= 0 value= 1

//key= 1 value= 2

c. 當value是原始型別的值時, 不需要遞迴呼叫

json.stringify(5, function(key,value)) //

"10"

json.stringify('5', function(key,value)) //

"55"

4)第三個引數主要用來增加可讀性,調整返回格式;

如果引數是乙個數字(<10),表示在返回的屬性面前的空格數量;

json.stringify(}, function

(key,value) , 4);/*"

}*/

如果引數是乙個字串(length<10), 表示在屬性前面新增該字串

json.stringify(}, function

(key,value) , '|--');/*"

}"*/

json.parse(value)將json物件的字串形式,轉為json物件;

value必須是合格json資料的字串,否則會丟擲異常!

所以json.parse方法在不能確認引數是否正常的情況下,應該try...catch...

try

catch

//其實如果是('"test"')不會丟擲異常,字串包含的是json資料"test"

第二個引數的用法同json.stringify()的第二個引數是函式的用法。

Json資料格式

在web 系統開發中,經常會碰到客戶端和伺服器端互動的問題,比如說客戶端傳送乙個 ajax 請求,然後在伺服器端進行計算,計算後返回結果,客戶端接收到這個響應結果並對它進行處理。那麼這個結果以一種什麼資料結構返回,客戶端才能比較容易和較好的處理呢?通過幾個專案的實踐,我發現 json 格式的資料是一...

JSON資料格式

下面這段文字,摘錄自留作備忘 21世紀初,douglas crockford尋找一種簡便的資料交換格式,能夠在伺服器之間交換資料。當時通用的資料交換語言是xml,但是douglas crockford覺得xml的生成和解析都太麻煩,所以他提出了一種簡化格式,也就是json。json的規格非常簡單,只...

解析 JSON 格式資料

比起 xml,json的主要優勢在於它的體積更小,在網路上傳輸的時候可以更省流量。但缺點在於,它的語義性較差,看起來不如xml 直觀。我們還需要在c apache apache2 htdocs目錄中新建乙個 get data.json 的 檔案,然後編輯這個檔案,並加入如下 json 格式的內容 修...