摘要:使用的思考使用过对象的程序员最常做的一项工作便是,将对象转化为字符串。该字符串的用途很多,例如可以使用在的中,在多个页面间进行传递。因为模式是固定的,那么定义模式的空间开销一定比使用该模式生成字符串的时间开销代价要小很多。
使用JSON.stringify的思考
使用过JSON对象的程序员最常做的一项工作便是,将JSON对象转化为字符串。该字符串的用途很多,例如可以使用在WEB的URL中,在多个页面间进行传递。
const obj = { id: 1, name: "object" }; const jsonStr = JSON.stringify(obj); // 转换为字符串 const json = JSON.parse(jsonStr); // 解析字符串为JSON对象
对于这个转换过程我们用的太得心应手,所以很少再去思考这中间是否还有需要优化的地方。
其实只要稍微深入思考一点,即使不读源代码,我们也能得出这样一个结论:在JSON对象转化为字符串时,是需要去识别某种模式的。
对于string类型,需要用双引号(")去标注
对于number类型,不需要标注
对于object类型,它的每个属性间需要用逗号(,)去分隔,并且需要双引号(")进行标注
对于array类型,则还需要加上"["和"]"来表示
例如:
const obj = [{ id: 1, name: "kobe" }, { id: 2, name: "wade" }]; const jsonStr = JSON.stringify(obj); // 结果为:[{"id":"1,"name":"kobe"},{"id":2,"name":"wade"}]
所以,如果要你去实现这样一个stringify的过程,这些类型的识别和标注都是不可避免的花销。
使用fast-json-stringify就是在这样一个逻辑小片段上,fast-json-stringify想到了提高stringify效率的方案:提前定义要转换对象的模式,那么就可以省去解析模式的时间开销。
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}
从官网的介绍来看,在某些情况下使用fast-json-stringify的效果可以比JSON.stringify快接近10倍!
基于fast-json-stringify的优化内容,我们很容易得出这样一个结论:在所有经常需要对某些固定模式进行stringify的场合,都适合使用fast-json-stringify。因为模式是固定的,那么定义模式的空间开销一定比使用该模式生成字符串的时间开销代价要小很多。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/99919.html
摘要:然后,生成的完整的字符串大致如下以上是一系列通用的键值转换方法就是的主体函数其他属性的拼接最后,将字符串传入构造函数来创建相应的函数。 1. 熟悉的JSON.stringify() 在浏览器端或服务端,JSON.stringify()都是我们很常用的方法: 将 JSON object 存储到 localStorage 中; POST 请求中的 JSON body; 处理响应体中的 ...
摘要:什么是是一个高度专注于以最少开销和强大的插件架构,为开发人员提供最佳体验的框架。它受到了和的启发,是目前最快的框架之一。 什么是 Fastify? Fastify 是一个高度专注于以最少开销和强大的插件架构,为开发人员提供最佳体验的 Web 框架。 它受到了 Hapi 和 Express 的启发,是目前最快的 Node 框架之一。 Fastify 独特的将 JSON Schema 应...
摘要:简析简介,是一种数据格式而不是编程语言,它和并没有从属关系,任何编程语言都可以使用语法规则分为三类简单值与语法相同,可以在中表示字符串,数值,布尔值和,但是其不支持数值字符串对象键值和键名都得用双引号数组解析和序列化目标对象,过滤器,字符串 JSON简析 1.简介 JSON,是一种数据格式而不是编程语言,它和JavaScrip并没有从属关系,任何编程语言都可以使用JSON; 2.语法...
摘要:说句玩笑话,如果是基于的,可能就叫了,形式可能就是这样的了,如果这样,那么可能现在是和比较密切了。此外,还有一个函数,我们较少看到,但是它会影响。 我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看,写完再去仔细对比你的控制台输出,如果有...
摘要:使用遍历数组有三点问题遍历顺序不固定引擎不保证对象的遍历顺序。作为原生函数,和自身操作字符串的速度是很快的。由于没有返回值返回,所以它的回调函数通常是包含副作用的,否则这个写了毫无意义。接受一个回调函数,你可以提前,相当于手写循环中的。 不要用 for_in 遍历数组 这是 JavaScript 初学者常见的误区。for_in 用于遍历对象中包括原型链上的所有可枚举的(enumerab...
阅读 4328·2021-11-24 10:24
阅读 1386·2021-11-22 15:22
阅读 1991·2021-11-17 09:33
阅读 2380·2021-09-22 15:29
阅读 493·2019-08-30 15:55
阅读 1638·2019-08-29 18:42
阅读 2712·2019-08-29 12:55
阅读 1752·2019-08-26 13:55