標籤:style blog http io ar color 使用 sp java
概述
JSON.stringify() 方法可以將任意的 JavaScript 值序列化成 JSON 字串。
文法
JSON.stringify(value[, replacer [, space]])
參數
-
value
-
將要序列化成 JSON 字串的值。
-
replacer 可選
-
如果該參數是一個函數,則在序列化過程中,被序列化的值的每個屬性都會經過該函數的轉換和處理;如果該參數是一個數組,則只有包含在這個數組中的屬性名稱才會被序列化到最終的 JSON 字串中。關於該參數更詳細的解釋和樣本,請參考使用原生的 JSON 對象一文。
-
space 可選
-
指定縮排用的空白字串,用於美化輸出(pretty-print)。
具體可以參考 MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
一、通常情況下,我們只使用如下代碼進行簡單的 JSON 字串化:
var JSONobj = {"name" : "value","arr" : [‘str1‘,‘str2‘]};console.log(JSON.stringify(JSONobj));//結果為{"name":"value","arr":["str1","str2"]}
二、實際上,第二個參數也有很重要的用途,比如對對象內的key-value 依次進行處理後轉換為字串:
var JSONobj = {"name" : "value","name2":"value2","arr" : [‘str1‘,‘str2‘,{‘arrObj‘ : ‘arrObj‘}]};JSON.stringify(JSONobj,function(key,value){ console.log(key,value)}); //結果為:JSONobj對象(value值),key無值
三、當需要展示的 json 串對方便使用,增加可讀性時,可以使用第三個參數:
var JSONobj = {"name" : "value","arr" : [‘str1‘,‘str2‘,{‘arrObj‘ : ‘arrObj‘}]};JSON.stringify(JSONobj, null, ‘\t‘);/* "{ "name": "value", "arr": [ "str1", "str2", { "arrObj": "arrObj" } ]}" */
實際上以上結果經過了兩次處理:
1. 為每一個 ‘{’、‘}’、value 後的‘,’ 末尾添加一個\n
2. 為每一個一級 key 前面添加一個\t (tab定位字元,即本例中第三個參數值),二級 key 前面加兩個\t,以此類推。
為了更清晰的驗證以上兩點,進行如下測試:
var JSONobj = {"name" : "value","arr" : [‘str1‘,‘str2‘,{‘arrObj‘ : ‘arrObj‘}]};JSON.stringify(JSONobj, null, ‘\t‘).replace(/\n/g,‘|--N--|‘).replace(/\t/g,‘|--T--|‘);//結果為"{|--N--||--T--|"name": "value",|--N--||--T--|"arr": [|--N--||--T--||--T--|"str1",|--N--||--T--||--T--|"str2",|--N--||--T--||--T--|{|--N--||--T--||--T--||--T--|"arrObj": "arrObj"|--N--||--T--||--T--|}|--N--||--T--|]|--N--|}"
JSON.stringify()