js基础(九) JSON
Robin 8/5/2017 javaScript面试
# 知识点一 JSON
JSON
不是一个单独的数据类型,它只是一种特殊的数据格式JSON
是一种语法,用来序列化对象、数组、数值、字符串、布尔值和null
。它基于JavaScript
语法,但与之不同:JavaScript不是JSON,JSON也不是JavaScript。- 属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。
- 在
window
浏览器对象中,提供了一个叫做JSON
的属性,它里面提供了两个方法
JSON.parse
: 把JSON
格式字符串转换成JSON
格式的对象,并返回,可以额外传入一个转换函数,用来将生成的值和其属性, 在返回之前进行某些修改。JSON.stringify
: 把JSON
格式的对象转换成JSON
格式的字符串,可以通过额外的参数, 控制仅包含某些属性, 或者以自定义方法来替换某些key
对应的属性值。
- 注意 在
IE6~7
中window
中没有JSON
属性,所以不支持JSON.parse
和JSON.stringify
两个方法,需要用eval
做兼容
var utils = {
// 类数组转数组
listToArray: function(likeAry) {
var ary = []
try {
ary = Array.prototype.slice.call(likeAry)
} catch(e) {
for(var i = 0;i < likeAry.length;i++) {
ary[ary.lenght] = likeAry[i]
}
}
return ary
},
// json字符串转json对象
jsonParse: function(str) {
return 'JSON' in window ? JSON.parse(str) : eval(`(${str})`)
}
}
var str = '{"name": "json", "age": 7}'
var json = utils.jsonParse(str)
console.log(json)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22