1.JSON.stringify() 方法用於將 JavaScript 值轉換為 JSON 字符串
語法為:JSON.stringify(value[, replacer[, space]])
1)value 必填,一般就是數組或者對象。
2)replacer 非必填,可以為數組或者函數。
(1)當replacer 為數組時,則僅轉換該數組中具有鍵值的成員。成員的轉換順序與鍵在數組中的順序一樣.
(2)當replacer 為函數時,則 JSON.stringify 將調用該函數,並傳入每個成員的鍵和值。使用返回值而不是原始值。如果此函數返回 undefined,則排除成員。根對象的鍵是一個空字符串:"".
3)space:就是用什么來做分隔符的。
1)如果省略的話,那么顯示出來的值就沒有分隔符,直接輸出來 。
2)如果是一個數字的話,那么它就定義縮進幾個字符,當然如果大於10 ,則默認為10,因為最大值為10。
3)如果是一些轉義字符,比如“\t”,表示回車,那么它每行一個回車。
4)如果僅僅是字符串,就在每行輸出值的時候把這些字符串附加上去。當然,最大長度也是10個字符。
第二,replace是數組或者方法的情況
replace是數組或者方法還和第一個參數的形態有着一定關系。分幾種情況來看:(看到一個特別好的案例,摘自以為大神)
以下一表示(第一個參數),二表示(第二個參數)。
1、一數組二function
由此可見,當第二個參數是function時,就是把系列化后的每一個對象(記住是每一個)傳進方法里面進行處理。 如上面實例所示。
2、一對象二function
這種情況不像第一個參數是數組的情況,它需要指明對象具體需要處理的屬性名稱。接着看一下第三種情況。
3、一數組二數組
第一和第二個參數都是數組的時候,只會系列化第一個數組,第二個被忽略了。
4、一對象二數組
上面舉了兩個例子,足以明白這種情況的輸出規則,第一個參數是對象,第二個是數組的時候,數組的值當結果的key。對象的值當結果的value,前提是數組的值在對象的屬性中存在。
好了,到這里,關於第二個參數replacer的取值情況,我已經通過例子解釋了一下。下面來斷續看第三個參數的情況。
第三、space的用法
講到space就有點小復雜了,分的情況比較多。總的來說就是一句話:用什么來做分隔符的。
在具體一點吧:
1、如果省略,輸出的結果就沒有分隔符,直接輸出。(這個不要舉例!)
2、如果是數字的話,表示縮進幾個字符,最大值10。
3、如果是轉義字符,比如"\t",表示回車,每行一個回車。
4、如果是字符串,輸出結果附加上去,最大長度10個字符。
2.JSON.parse()
語法為:json.parse(text[,reviver])
1)text 必填,一個有效的json字符串
2)reviver
可選。 一個轉換結果的函數。 將為對象的每個成員調用此函數。 如果成員包含嵌套對象,則先於父對象轉換嵌套對象。 對於每個成員,會發生以下情況:
-
如果 reviver 返回一個有效值,則成員值將替換為轉換后的值。
-
如果 reviver 返回它接收的相同值,則不修改成員值。
-
如果 reviver 返回 null 或 undefined,則刪除成員
