摘要:用于轉換結果的函數或數組。作為函數,它有兩個參數,鍵值都會被序列化。如果返回一個該字符串作為屬性值被添加入。如果一個被序列化的對象擁有方法,那么該方法就會覆蓋該對象默認的序列化行為。如果返回它接收的相同值,則不修改對應屬性值。
JSON 值
JSON 值可以是:
數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true 或 false)
數組(在中括號中)
對象(在大括號中)
null
JSON 文件JSON 文件的文件類型是 ".json"
JSON 文本的 MIME 類型是 "application/json"
對象和數組
屬性名稱必須是雙引號括起來的字符串
最后一個屬性后不能有逗號
數值
禁止出現前導零( JSON.stringify 方法自動忽略前導零,而在 JSON.parse 方法中將會拋出 SyntaxError)
如果有小數點, 則后面至少跟著一位數字
字符串
字符串必須用雙引號括起來
方法 JSON.stringifyJSON.stringify(value[, replacer[, space]])
replacer:
可選。用于轉換結果的函數或數組。
var str = {"name":"haha", "age":20}; JSON.stringify(str); // {"name":"haha","age":20}
作為函數,它有兩個參數,鍵(key)值(value)都會被序列化。
過濾函數以對象中的每一個屬性和值作為輸入,返回值有以下幾種情況:
如果返回一個 Number, 轉換成相應的字符串被添加入JSON字符串。
如果返回一個 String, 該字符串作為屬性值被添加入JSON。
如果返回一個 Boolean, "true" 或者 "false"被作為屬性值被添加入JSON字符串
返回undefined表示忽略該屬性
返回對象將會觸發遞歸調用知道遇到基本類型的屬性
返回無法stringify的值將會被忽略
JSON.stringify(str, function(key, val){ console.log("key is ", key); console.log("val is ", typeof(val)); return val; } //====================== key is val is object key is name val is string key is age val is number // {"name":"haha","age":20}
function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; } var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7}; var jsonString = JSON.stringify(foo, replacer); // {"week":45,"month":7}
如果 replacer 是一個數組,則僅轉換該數組中具有鍵值的成員。成員的轉換順序與鍵在數組中的順序一樣。
JSON.stringify(str, ["name", "haha", "kk"]); // {"name":"haha"}
space:
可選,文本添加縮進、空格和換行符,如果 space 是一個數字,則返回值文本在每個級別縮進指定數目的空格,如果 space 大于 10,則文本縮進 10 個空格。space 也可以使用非數字,如:t。
JSON.stringify(str, null, 4); // { "name": "haha", "age": 20 }toJSON()
如果一個被序列化的對象擁有 toJSON 方法,那么該 toJSON 方法就會覆蓋該對象默認的序列化行為。
var data = { name:"niuzai", info:{ age:18, sex:"male" }, toJSON:function(){ return "by toJSON"; } }; JSON.stringify(data); //""by toJSON"";JSON.parse()
JSON.parse(text[, reviver])
reviver:
可選,一個函數,它用來轉換已經被從text字符串轉為對象的對象,規則如下:
如果reviver返回一個有效值,則對應的屬性值將替換為轉換后的值。
如果reviver返回它接收的相同值,則不修改對應屬性值。
如果reviver返回undefined,則刪除對應的屬性
function reviver(key,value){ if(key=="webName"){ return "antzone"; } return value; } var jsonStr="{"webName":"螞蟻部落","url":"softwhy.com","age":"2"}"; var obj=JSON.parse(jsonStr,reviver); console.log(obj); // { age: "2", url: "softwhy.com", webName: "antzone" }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99289.html
摘要:務必在之前引入最新的核心文件為了偷懶,我們這里引入的第三方庫文件都是采用的方式,也可以選擇把庫下載到本地然后再引用。 文章系列 【從零入門系列-0】Spring Boot 之 Hello World 【從零入門系列-1】Spring Boot 之 程序結構設計說明 【從零入門系列-2】Spring Boot 之 數據庫實體類 【從零入門系列-3】Spring Boot 之 數據庫操作...
摘要:務必在之前引入最新的核心文件為了偷懶,我們這里引入的第三方庫文件都是采用的方式,也可以選擇把庫下載到本地然后再引用。 文章系列 【從零入門系列-0】Spring Boot 之 Hello World 【從零入門系列-1】Spring Boot 之 程序結構設計說明 【從零入門系列-2】Spring Boot 之 數據庫實體類 【從零入門系列-3】Spring Boot 之 數據庫操作...
摘要:它將返回目標對象。有些文章說是深拷貝,其實這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大。拷貝前后兩個對象互不影響。使用深拷貝的場景完全改變變量之后對沒有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數值或對象賦給某個變量的過程,分為: 1、基本數據類型:賦值,賦值之后兩個變量互不影響 2、引用數據類型:賦址,兩個變量具有相同的引用,指向同一個對象,相互之間有...
摘要:系列之及簡單的使用一有什么用是核心功能,通過插件可以實現所不能完成的復雜功能,使用豐富的自定義,可以控制編譯流程的每個環節,實現對的自定義功能擴展。三使用在配置文件中,向屬性傳入實例即可。 webpack系列之plugin及簡單的使用 一.plugin有什么用 plugin是webpack核心功能,通過plugin(插件)webpack可以實現loader所不能完成的復雜功能,使用p...
摘要:在我們介紹了之后,來看一個前端文件過濾的工具,代碼的格式化肯定會涉及到文件系統,一般工具會首先讀取文件,格式化操作之后,重新寫入。 在我們介紹了Husky、Commitlint之后,來看一個前端文件過濾的工具Lint-staged,代碼的格式化肯定會涉及到文件系統,一般工具會首先讀取文件,格式化操作之后,重新寫入。對于較大型的項目,文件眾多,首先遇到的就是性能問題,雖然如Eslint之...
閱讀 2067·2019-08-30 15:53
閱讀 3064·2019-08-30 15:44
閱讀 2914·2019-08-30 14:11
閱讀 2910·2019-08-30 14:01
閱讀 2694·2019-08-29 15:16
閱讀 3719·2019-08-29 13:10
閱讀 1239·2019-08-29 10:56
閱讀 2526·2019-08-26 13:58