简介
在前端开发中常常需要将 JavaScript 对象转换为字符串进行传输或存储。而 npm 包 obj-stringify 正是为了解决这个问题而出现的。obj-stringify 是一个普通对象深度字符串化工具,可以将嵌套对象、函数等复杂结构转换成字符串。该工具简单易用,被广泛使用。
安装
通过 npm 安装 obj-stringify:
npm install obj-stringify
使用方法
obj-stringify 仅包含一个方法 stringify,使用方法如下:
-- -------------------- ---- ------- ----- --------- - ------------------------ ----- --- - - -- -------- -- - -- --- -- --- -- ---------- --- -- --- - - ---------------------------
输出结果:
{"a":"Hello","b":{"c":[1,2,3],"d":function() {},"e":/a/}}
方法参数
stringify 支持两个参数:要转换的对象和可选的选项对象:
stringify(obj, options)
对象和选项可同时使用,也可以只使用其中之一。
选项
obj-stringify 支持以下选项:
选项 | 类型 | 描述 |
---|---|---|
keepCircularReference | Boolean | 是否保留循环引用,开启后可兼容 CircularJSON |
filter | Function(key, value) | 转换过程中对数据进行过滤的回调函数 |
space | Number, String | 缩进字符串的长度或该字符串 |
keepCircularReference
默认值为 false。当转换的对象存在循环引用时,会抛出 TypeError。但是,开启 keepCircularReference 可以兼容 CircularJSON,并保留循环引用。如下例:
const obj = { a: 'Hello', b: {} } obj.b.circle = obj console.log(stringify(obj, { keepCircularReference: true }))
输出结果:
{"a":"Hello","b":{"circle":["Circular",""],"__circular__":true}}
在输出结果中,circle 属性是循环引用点,circular 属性表示是否存在循环引用。
filter
filter 是一个回调函数,每次处理一个键值对时调用。当该函数返回 false 时,该键值对将从结果中被删除,否则将被保留。如下例:
-- -------------------- ---- ------- ----- --- - - -- -------- -- - -- --- -- --- -- ---------- --- -- --- - - -------------------------- - ------- ------------- ------ - ------ ------ ----- --- ---------- - ---
输出结果:
{"a":"Hello","b":{"c":[1,2,3],"e":{}}}
示例中函数类型的键值对被过滤掉了。
space
space 是用于控制缩进的选项。其值可以是一个数字或一个字符串。数字表示缩进空格的数量,字符串则表示缩进使用的字符串,如下例:
-- -------------------- ---- ------- ----- --- - - -- -------- -- - -- --- -- --- -- ---------- --- -- --- - - -------------------------- - ------ - ---
输出结果:
-- -------------------- ---- ------- - ---- -------- ---- - ---- - -- -- - -- ---- ---------- --- ---- -- - -
可以看到,输出结果的每一行前面有两个空格缩进。
当 space 的值为字符串时,输出结果会使用该字符串作为缩进字符,如下例:
-- -------------------- ---- ------- ----- --- - - -- -------- -- - -- --- -- --- -- ---------- --- -- --- - - -------------------------- - ------ ---- ---
输出结果:
-- -------------------- ---- ------- - ------ -------- ------ - -------- - -------- -------- ------- ------ -------- ---------- --- -------- -- --- -
总结
obj-stringify 是一个实用的对象字符串化工具,可以将嵌套对象、函数等复杂结构转换成字符串。其使用方法简单,但选项较为丰富,能够满足各种格式化场景的需求。该工具在前端开发中得到广泛的应用,对于处理对象转换字符串的问题有很好的指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/63291