js基础(九) JSON

8/5/2017 javaScript面试

# 知识点一 JSON

  1. JSON 不是一个单独的数据类型,它只是一种特殊的数据格式
  2. JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null 。它基于 JavaScript 语法,但与之不同:JavaScript不是JSON,JSON也不是JavaScript
  3. 属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。
  4. window 浏览器对象中,提供了一个叫做 JSON 的属性,它里面提供了两个方法
    • JSON.parse : 把 JSON 格式字符串转换成 JSON 格式的对象,并返回,可以额外传入一个转换函数,用来将生成的值和其属性, 在返回之前进行某些修改。
    • JSON.stringify : 把 JSON 格式的对象转换成 JSON 格式的字符串,可以通过额外的参数, 控制仅包含某些属性, 或者以自定义方法来替换某些 key 对应的属性值。
  1. 注意 在 IE6~7window 中没有 JSON 属性,所以不支持 JSON.parseJSON.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