摘要:使用的思考使用過對象的程序員最常做的一項工作便是,將對象轉(zhuǎn)化為字符串。該字符串的用途很多,例如可以使用在的中,在多個頁面間進行傳遞。因為模式是固定的,那么定義模式的空間開銷一定比使用該模式生成字符串的時間開銷代價要小很多。
使用JSON.stringify的思考
使用過JSON對象的程序員最常做的一項工作便是,將JSON對象轉(zhuǎn)化為字符串。該字符串的用途很多,例如可以使用在WEB的URL中,在多個頁面間進行傳遞。
const obj = { id: 1, name: "object" }; const jsonStr = JSON.stringify(obj); // 轉(zhuǎn)換為字符串 const json = JSON.parse(jsonStr); // 解析字符串為JSON對象
對于這個轉(zhuǎn)換過程我們用的太得心應手,所以很少再去思考這中間是否還有需要優(yōu)化的地方。
其實只要稍微深入思考一點,即使不讀源代碼,我們也能得出這樣一個結(jié)論:在JSON對象轉(zhuǎn)化為字符串時,是需要去識別某種模式的。
對于string類型,需要用雙引號(")去標注
對于number類型,不需要標注
對于object類型,它的每個屬性間需要用逗號(,)去分隔,并且需要雙引號(")進行標注
對于array類型,則還需要加上"["和"]"來表示
例如:
const obj = [{ id: 1, name: "kobe" }, { id: 2, name: "wade" }]; const jsonStr = JSON.stringify(obj); // 結(jié)果為:[{"id":"1,"name":"kobe"},{"id":2,"name":"wade"}]
所以,如果要你去實現(xiàn)這樣一個stringify的過程,這些類型的識別和標注都是不可避免的花銷。
使用fast-json-stringify就是在這樣一個邏輯小片段上,fast-json-stringify想到了提高stringify效率的方案:提前定義要轉(zhuǎn)換對象的模式,那么就可以省去解析模式的時間開銷。
const fastJson = require("fast-json-stringify"); const stringify = fastJson({ title: "player", type: "object", properties: { name: { type: "string" }, position: { type: "string" }, age: { type: "integer" } } }); console.log(stringify({ name: "kobe", position: "SG", age: 39 })); // {"name":"kobe","position":"SG","age":39}
從官網(wǎng)的介紹來看,在某些情況下使用fast-json-stringify的效果可以比JSON.stringify快接近10倍!
基于fast-json-stringify的優(yōu)化內(nèi)容,我們很容易得出這樣一個結(jié)論:在所有經(jīng)常需要對某些固定模式進行stringify的場合,都適合使用fast-json-stringify。因為模式是固定的,那么定義模式的空間開銷一定比使用該模式生成字符串的時間開銷代價要小很多。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99919.html
摘要:然后,生成的完整的字符串大致如下以上是一系列通用的鍵值轉(zhuǎn)換方法就是的主體函數(shù)其他屬性的拼接最后,將字符串傳入構(gòu)造函數(shù)來創(chuàng)建相應的函數(shù)。 1. 熟悉的JSON.stringify() 在瀏覽器端或服務端,JSON.stringify()都是我們很常用的方法: 將 JSON object 存儲到 localStorage 中; POST 請求中的 JSON body; 處理響應體中的 ...
摘要:什么是是一個高度專注于以最少開銷和強大的插件架構(gòu),為開發(fā)人員提供最佳體驗的框架。它受到了和的啟發(fā),是目前最快的框架之一。 什么是 Fastify? Fastify 是一個高度專注于以最少開銷和強大的插件架構(gòu),為開發(fā)人員提供最佳體驗的 Web 框架。 它受到了 Hapi 和 Express 的啟發(fā),是目前最快的 Node 框架之一。 Fastify 獨特的將 JSON Schema 應...
摘要:簡析簡介,是一種數(shù)據(jù)格式而不是編程語言,它和并沒有從屬關(guān)系,任何編程語言都可以使用語法規(guī)則分為三類簡單值與語法相同,可以在中表示字符串,數(shù)值,布爾值和,但是其不支持數(shù)值字符串對象鍵值和鍵名都得用雙引號數(shù)組解析和序列化目標對象,過濾器,字符串 JSON簡析 1.簡介 JSON,是一種數(shù)據(jù)格式而不是編程語言,它和JavaScrip并沒有從屬關(guān)系,任何編程語言都可以使用JSON; 2.語法...
摘要:說句玩笑話,如果是基于的,可能就叫了,形式可能就是這樣的了,如果這樣,那么可能現(xiàn)在是和比較密切了。此外,還有一個函數(shù),我們較少看到,但是它會影響。 我們先來看一個JS中常見的JS對象序列化成JSON字符串的問題,請問,以下JS對象通過JSON.stringify后的字符串是怎樣的?先不要急著復制粘貼到控制臺,先自己打開一個代碼編輯器或者紙,寫寫看,寫完再去仔細對比你的控制臺輸出,如果有...
摘要:使用遍歷數(shù)組有三點問題遍歷順序不固定引擎不保證對象的遍歷順序。作為原生函數(shù),和自身操作字符串的速度是很快的。由于沒有返回值返回,所以它的回調(diào)函數(shù)通常是包含副作用的,否則這個寫了毫無意義。接受一個回調(diào)函數(shù),你可以提前,相當于手寫循環(huán)中的。 不要用 for_in 遍歷數(shù)組 這是 JavaScript 初學者常見的誤區(qū)。for_in 用于遍歷對象中包括原型鏈上的所有可枚舉的(enumerab...
閱讀 4392·2021-11-24 10:24
閱讀 1419·2021-11-22 15:22
閱讀 2048·2021-11-17 09:33
閱讀 2457·2021-09-22 15:29
閱讀 526·2019-08-30 15:55
閱讀 1666·2019-08-29 18:42
閱讀 2742·2019-08-29 12:55
閱讀 1784·2019-08-26 13:55