点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
简单的知识,不去重视,不去总结,不去关心,永远都是不懂的。
今天讲一下JSON对象的相关方法,相信大家,听到json对象会有一种很熟悉又很模糊的感觉,熟悉是因为我们立马会想到它的两个方法:JSON.parse()和JSON.stringify()。模糊是可能了解的就仅此而已。
从两个方面聊一下:
一、兼容性
使用JavaScript语言解析字符串为JSON对象:JSON.parse()。
解析JSON对象为字符串时可以使用:JSON.stringify()。
JSON对象解析不是伴随着JavaScript的出现而产生的。例如在比IE8更低版本的浏览器中不能直接使用JSON解析方法。不过现在我们通常可以在浏览器中添加ES5-shim来增加浏览器对ECMAScript5功能的支持,让浏览器支持JSON对象的解析,这样我们就可以在后面的代码中放心使用JSON.parse/JSON.stringfy了。
<script src="//www.domain.com/es5-shim.js"></script>
二、更多方法需要了解
JSON对象除了上面那两个方法,还有一些容易混淆的方法:
JSON.toString():被调用时会调用Object原型上的toString方法,会取得JSON对象的值并转为字符串,如果没有具体的值,则返回原型数组。
JSON.valueOf():用于获取某个对象中的值。
JSON.toLocalString:也是Object原型上的方法,经常会返回与toString()相同内容,但对于Date对象,toLocaleString()会返回格式化后的时间字符串。
下面举个例子:
第一,如果是对象,怎么输出
1、JSON.stringify({name:'小郑搞码事'})
输出:"{"name":"小郑搞码事"}"
2、JSON.toString({name:'小郑搞码事'})
输出:"[object JSON]"
3、JSON.value0f({name:'小郑搞码事'})
输出:JSON {parse: ƒ, stringify: ƒ, Symbol(Symbol.toStringTag): "JSON"}
4、JSON.toLocaleString({name:'小郑搞码事'})
输出:"[object JSON]"
第二,如果是数组,怎么输出
let colors = ['red', 'blue', 'green']
console.log(colors.toString())
输出:red, blue,green
console.log(colors.valueOf())
输出:['red', 'blue', 'green']
console.log(colors.toLocaleString())
输出:red, blue,green
第三,如果是Date
let date = new Date()
console.log(date .toString())
输出:Thu Jul 05 2018 07:42:28 GMT+0800 (中国标准时间)
console.log(date .valueOf())
输出:1530747748017
console.log(date .toLocaleString())
输出:2018/7/5 上午7:42:28
总结:
写到这里,突然想到一句话,存在即合理,JSON对象常用的可以就是JSON.parse/JSON.stringify,其它的方法用好了,也是一把利器。