javascript json序列化-js对象通过json序列化方法JSON

问题

如标题,js中对象json序列化方法JSON.stringfy()输出非空对象,结果为'{}'

如果你想获取中国联通当前的网络类型,可以在网上找到两种方法。 一种是使用navigator.userAgent中包含的NetType信息来确定javascript json序列,另一种是通过navigator.connection中的type数组来确定。

javascript json序列化-js对象通过json序列化方法JSON

测试结果还是不理想,我开始怀疑判断所依据的数组或者字符串不存在。 但我不知道navigator中除了ua之外还有哪些信息,所以想输出全局变量navigator来看看。

Alert(JSON.stringfy(navigator)) 的结果仍然是“{}”。 尽管我通过console.log(navigator)输出对象内容得到了我想要的结果,但我还是很好奇为什么专门用​​于js中序列化对象的JSON.stringfy()不起作用。

javascript json序列化-js对象通过json序列化方法JSON

解决

网上查了资料,你可能不知道JSON.stringfy的用法。 上面说过javascript json序列化,JSON.stringfy()的用途很广泛,很多js框架底层的toJson()都是用这个来实现的。 而且它对单个值的处理是出人意料的,例如 JSON.stringify() 会将 NaN 和 Infinity 转换为 null:

javascript json序列化-js对象通过json序列化方法JSON

const obj = { nan: parseInt('not a number'), inf: Number.POSITIVE_INFINITY };
JSON.stringify(obj); // '{"nan":null,"inf":null}'

还有一种情况会抛出error异常:

javascript json序列化-js对象通过json序列化方法JSON

const obj = {};
// 存在循环引用的对象,它指向它本身
obj.prop = obj;
// 会抛出 "TypeError: TypeError: Converting circular structure to JSON" 异常
JSON.stringify(obj)

不过,JSON.stringify() 也会直接省略这些值为 function 和 undefined 的属性,如下:

javascript json序列化-js对象通过json序列化方法JSON

const obj = { fn: function() {}, undef: undefined };
// 它会返回空对象
JSON.stringify(obj); // '{}'

因此,json序列化返回'{}',因为导航器不是纯数据,它内部包含一些函数。

当然,通过 JSON.stringify(obj) 输出无法查看对象内容。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript json序列化-js对象通过json序列化方法JSON https://www.wkzy.net/game/196122.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务