json,前后端进行数据传输的一种格式,基本前后端分离的模式中已经非常的普遍了。而且,语法也很简答。他只有两个方法,parse,stringify.大家都不会陌生。那么今天我们来看一下你可能会忽略掉的json的一些坑。
1:json对于解析值为undefined的值有一些特别的处理。分为两种情况在对象中undefined将会被直接忽略掉。我们来做个测验。let obj = {name: undefined,age: 10} let result = JSON.stringify(obj)console.log(result)结果为 {"age":10}。//你会看到出现在对象中的值为undefined的name被忽略掉了。
第二个:undefined出现在数组中将会被置为null,继续测验。
var obj = {name: [undefined,10]} var result = JSON.stringify(obj)console.log(result)结果为:{"name": [null,10]}
那么我们在前后端数据传输中就得特别注意了还有进行对象深拷贝时候就尽量规避使用json.parse(json.string(obj))。可能会导致一些其他问题。
最后再说一个json的用法。配合localStorage存储一个对象。我们知道localStorage只能存储字符串,因此我们可以利用json.stringify()转换为字符串,然后用的时候在通过parse取出来就好了。