JSON

JSON格式是种用于数据交换的文本格式,目的是取代麻烦笨重的XML格式。
我这里有些数据,然后发送给服务器或者其他终端,然后对方就需要解析吧,关键是怎么解析呢?解析乱了呢?所以提前约定好一种数据写法,一种格式,然后解析就方便了。
以前是XML格式:


haha
5

比较像html的格式了,但是好麻烦哦。
JSON格式:

{
  "name" : "haha",
  "age": "5"
}

看着好像对象的格式哦,是吧。因为用着太舒服了,简单,所以推广了。但是,严格意义上,JSON格式不仅仅用在浏览器中的,它是一种数据格式,就是用在数据交互中的,所以用途比较广,比如脱离JS,用在服务器中,解析JSON格式数据,然后得到一个对象。
严格规定:

  • 复合类型值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
  • 简单类型值:数值(必须十进制内表示),字符串,布尔值和null,其他不行的。
  • 字符串必须双引号。
  • 对象键名key必须用双引号。
  • 数组、对象最后一个成员后面,不能加逗号。
    说这个的意思就是JS中的对象的写法是比较宽松自由的,加以区别哦。
合格的写法:
["one","two","three"]
{"one":1,"two":2,"three":3}
{"names":["张三","李四"]}
[{"name":"张三"},{"name":"李四"}]

错误的写法:
{name:"张",'age':32}     //属性必须双引号
[32,64,234,0xFFF]       //不能十六进制
{"name":"张","age":undefined}    // 不能undefined
{"name":"张",
"birthday":new Date('Fir ,26 Aug 2011 07:13:17'),
"getName": function() {
  return this.name
}}                                  //不能日期和函数

空数组和空对象也是符合的,null也是符合的。

JSON.stringify()

这里要讲在JS 中处理JSON 格式的数据。
JSON.stringify用于将一个值转化为字符串。字符串符合JSON格式,并可以被JSON.parse方法还原。

var str = '{name : "haha", age: 3}'        // 字符串,符合JSON格式
JSON.parse(str)                    //执行,得到了{age:3,name:"haha"}
JSON.parse(str).age            // 3
JSON.parse(str).name         //"haha"
字符串转JS数据。
现在要JS数据转成字符串:
var obj ={a:1,b:2}
JSON.stringify(obj)            //"{"a":1,"b":2}"

简单数据的深拷贝

上次是用函数递归,先把参数进行遍历,在函数里重新生成空对象,遍历过程中再去赋值,return回来。

var obj = {
  name : 'hunger',
  age : 3,
  friends : ['aa','bb','cc']
}
var obj2 = JSON.parse(JSON.stringify(obj))      //先变成字符串,再把字符串解析变成JS的对象
obj.age = 4
console.log(obj2.age)                //  3

JS对象字面量写法长得像JSON格式数据,两者不同范畴。JS更宽泛,JSON更严谨。JS的函数,日期等格式不支持JSON规范。

你可能感兴趣的:(JSON)