当前位置:首页 > 日记 > 正文

你可能不知道json.stringify()详细解释

你可能不知道json.stringify()详细解释
前言

JSON已经逐渐取代XML是由世界各地的开发商广泛使用。本文是对部分json.stringify在Javascript中使用的细节进行深入的解释。首先,JSON,Javascript的简要回顾:

并非所有合法JSON都是有效的Javascript;
JSON仅是文本格式;
JSON中的数字是十进制的。
1。json.stringify
设:a = 2,b:(函数)};
JSON.stringify(食品);
:2 }
的json.stringify函数将Javascript对象为文本JSON。不能忽视文本的文本属性,属性B在foo的值是一个函数的定义和不丢失的转换。

还有什么其他属性不能转换

1。循环引用

如果一个对象的属性值以间接的方式引用对象本身,那么它就是一个循环引用:
var bar = {
{:
C:Foo
}
};
var { { { {
B:酒吧
};
属性C指向它自己,如果它被逐层解析,它将进入一个无限循环:
让foostringified = json.stringify(Foo);
console.log(foostringified); / / {B:{ :{ } } }
C的属性指向富对象,而富对象中的B属性指向bar对象,不能处理,整个函数被忽略,返回到空对象。

下列定义(原文中的示例)无法编译:
设;
错误消息:
referenceerror:Foo没有定义
在REPL:1:14
功能语言Haskell,类似的定义方法可以因为懒惰的评价技术。

2。符号和定义
设为:未定义};
JSON.stringify(食品);
{
符号
符号();
JSON.stringify(食品);
{
例外

在一个数组中的元素,stringify无法填充空。
让= {符号(Foo),定义,功能('works ' }){ },
JSON.stringify(食品);
{零,零,零/ 'works}
这可以保持数组本身的形状,即每个元素的原始索引。

为什么有些属性无法stringify

因为JSON是一个通用的文本格式,它是不相关的语言。假如函数的定义也stringify,如何决定哪些语言是如何把它呈现在一个适当的方式将变得更加复杂,特别是相关的一些语言特征,如符号在Javascript。

ECMAscript的官员也强调了这一:

它并不试图把ECMAscript的内部数据表示,表示,世界的第二部分。

2。重写对象tojson功能

一种绕过一些对象的属性是不stringify是实现对象的tojson方法来自定义stringify对象。因为几乎每个Ajax调用将使用json.stringify,掌握这一技术将服务器交互的处理有很大的帮助。

和toString允许你返回字符串的形式对象(字符串)。类似tojson,tojson提供了一种方法来变换对象,不能stringify属性,以便下一json.stringify可以转化为JSON格式。
函数人(第一个,最后一个){
this.firstname =第一;
最后this.last =;
}

(person.prototype.process =功能){
返回this.firstname + +
this.lastname;
};

让艾德=新的人('ade,'p');
JSON.stringify(ADE);
{ / / 名:与
人的实例的过程中的作用是不stringify ADE。如果服务器只希望ADE的全名,而不是让名字和名字,我们可以直接定义tojson实现目标:
(person.prototype.tojson =功能){
{姓名:this.process返回();};
};

让艾德=新的人('ade,'p');
JSON.stringify(ADE);
{ / / 姓名:阿德P}
定义tojson的优点是可重用性和稳定性。你可以使用ADE匹配任何图书馆,和数据传输将姓名的tojson定义返回。
jQuery
美元。后('endpoint,ADE);

2 /角
This.httpService.post('endpoint,ADE)
三.可选参数

json.stringify的完整定义如下:
json.stringify(价值、替代品、空间)
无论是替代品和空间是可选参数,然后我们会解释它们分开。

替代品

替代品是一个过滤函数或数组包含要stringify属性的名称。如果没有定义,所有的默认属性是stringify。

1。阵列

只有在数组的属性stringify:
允许{ { { {
甲:1,
b:字符串
C:假
};
JSON.stringify(Foo,{ 'a','b' });
:1、B
嵌套属性也被过滤:
让bar = {
甲:1,
B:{ 2 }
};
JSON.stringify(酒吧,{ 'a','b' });
:1、B:

JSON.stringify(酒吧,{ A,B,C});
:1、B::2 }
定义筛选器数组有时不符合要求时,可以自定义筛选器函数。

2。功能

筛选器函数将对象中的每个属性和值作为输入,返回值有以下几种情况:

返回未定义以指示属性被忽略;
返回一个布尔值,或将stringify;
返回对象将触发递归调用来了解基本类型的属性。
返回值,不能stringify将被忽略;
让巴兹= { {
甲:1,
B:{ 2 }
};

返回一个大于1的值
让替代品=功能(键,值){
如果(typeof =数){
返回值> 1值:未定义;
}
返回值;
};

JSON.stringify(Baz,替代品);
::2 }
通过重写上面的函数来添加适当的输出,您可以看到具体的执行步骤:
让obj = { {
甲:1,
B:{ 2 }
};

让跟踪=函数(键,值){
Console.log ('Key: ', key);
console.log(价值:',值);
返回值;
};

JSON.stringify(obj,示踪);
键:
对象值:{:1,b:对象}
密钥:
1 /值:
密钥:
对象{ 2:
密钥:
2 /值:
空间

你知道默认json.stringify只返回一行,也没有在所有的空间如果你想打印得更漂亮,你需要使用空格参数。

我将告诉你一个非常简单的方法,通过制表符来分隔它。
让空间= {
甲:1,
B:{ 2 }
};

使用选项卡
JSON.stringify(空间的定义,);

a:1,

:2
}
JSON.stringify(空间、不确定的,);
{ 1:

自定义分隔符
JSON.stringify(空间,定义,'a');

1,
B:{ / /
2

三颗星问题:打印结果倒数第三行为什么有21个

结论

本文介绍了一些常用的技术tojson:

几种类型的stringify无法
使用tojson定义json.stringify性能
两种定义可选参数,过滤性能
可选参数空间用于格式化输出结果。
不同的数组和对象之间如果它包含一个元素,不能stringify
总结

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的支持。

原文:你不知道stringify JSON。

翻译:fundebug

为了保证可读性,本文采用意译,而不是直译,此外,本著作的版权归原作者所有,翻译仅用于学习。

相关文章

PS如何利用滤镜转素描效果

PS如何利用滤镜转素描效果

滤镜,素描,效果,电脑软件,PS,   本教程的效果制作过程其实只有一步,用照亮边缘滤镜快速把图片转为线条效果,后期只需要去色,反相再添加一些细节即可。PS利用滤镜转素描效果教程原图最终效果1、打开素材图片,把背景图层复制一层,执行…

360浏览器收藏夹不见了怎么设置?

360浏览器收藏夹不见了怎么设置?

浏览器,设置,收藏夹,不见了,电脑软件,360浏览器收藏夹消失了,应该怎么办?大家在使用360浏览器的过程中,可能会因操作不当导致收藏夹不显示,下边就为大家带来360浏览器收藏夹消失的解决办法!360浏览器显示/隐藏收藏夹办法下面两图为收藏夹显示…

PS滤镜使魔环特效

PS滤镜使魔环特效

滤镜,特效,电脑软件,PS,使魔环,在现实生活中,有许多特殊的效果需要我们在设计工作中表现出来。我们不能通过射击来实现它们。例如,世界的尽头,山洪和宇宙空间,我们需要使用特效合成技术,当然,这也是对设计师创造性想象力的一次大考验。我们将使用…

photoshop cs6如何将照片转换为CMY

photoshop cs6如何将照片转换为CMY

模式,照片,转换为,如何将,电脑软件,有时由于工作或打印的需要,可能要把照片保存成cmyk模式,今天,我们一起来学习吧。photoshop cs6如何将照片转换为CMYK模式?启动photoshop cs6软件。如图。菜单栏,选择"文件”——“打开&r…

如何在Excel2010一个单元格中插入

如何在Excel2010一个单元格中插入

图表,单元,格中,步骤,如何在,  往往我们用到的Excel插入图表时,图表都会占据很多个单元格,但是你有没想过一个单元格里也可以插入图表,有没兴趣做这么一个迷你单元格,那就跟着我的步伐吧。在Excel2010一个单元格中插入图表的步骤步骤一、首先…

PS图形如何使艺术风格更优美

PS图形如何使艺术风格更优美

图形,优美,艺术风格,电脑软件,PS,今天,小编辑分享一个教程,教你用ps来比较艺术的音色,看的容易理解,非常适合新手,希望大家喜欢。 PS人比较艺术音调的方式 首先,人类图像着色的基本原理。 与设计原则一样,图片的主色最好不超过三种,小的颜色有淡…

5种适合人工智能发展的编程语言附

5种适合人工智能发展的编程语言附

人工智能,编程语言,附属,适合,电脑软件,人工智能是一个非常广泛的领域。许多编程语言可用于人工智能的发展,所以很难说哪种语言必须为AI的选择也意味着会有好的和坏的点,并不是所有的编程语言都可以节省时间和能源开发。所以我们有5种,更适合…

jQuery中on方法使用注意事项详解

jQuery中on方法使用注意事项详解

方法,详解,注意事项,电脑软件,jQuery,on(eventType,[childSelector],[data],fn)采用事件委托机制绑定事件,好处是子元素动态加入时无需再次绑定。on方法可以传入childSelector指定添加事件处理函数的具体子元素,还可以传入对象格式的数据data…

PHP7.1新功能之Nullable Type用法

PHP7.1新功能之Nullable Type用法

新功能,电脑软件,Type,Nullable,本文实例分析了PHP7.1新功能之Nullable Type用法。分享给大家供大家参考,具体如下:在 PHP5 时代,PHP 的参数已经支持 type hint(除了基本类型),想必大家应该很熟悉;后来 PHP7 时代来临,PHP 也可以指定返回值的类型(以…

在EXCEL中设置各种不同字体的方法

在EXCEL中设置各种不同字体的方法

设置,方法,字体,电脑软件,EXCEL,在EXCEL中设置各种不同字体的方法 方法/步骤1、首先打开EXCEL2003表.如下图所示:2、选择已经建立的表格,如下图所示: 3、选中你所需要设置的表格区域,点击田字型样式旁边的倒三角键头。如下图所示:4、然后会出现…

最幽默个性签名的经典搞笑个性签名

最幽默个性签名的经典搞笑个性签名

个性签名,幽默,搞笑,经典,电脑软件,事实上,你有优势。鬼魂不敢跑到你家过夜。下面是一个小编辑,组织最幽默的个人签名的相关资料供你参考! 最幽默的人格签名{优秀文本} 1。爱情是对天地的迷信。 2。也许心碎是最美的爱。 三.爱情就像一起旅…

如何设置时间和日期PPT2010制作同

如何设置时间和日期PPT2010制作同

日期,如何设置,同步显示,时间,电脑软件,如何在PPT中插入时间并同步更新创建幻灯片幻灯片时,需要插入当前时间和日期。如果是手动输入,它只是一串数字,不能实现同步更新。让我们在PPT中分享插入时间和同步更新的方法。不懂的朋友会学到更多。 …