您的位置:首页 > Web前端 > JavaScript

JSON

2015-11-01 13:10 543 查看
JSON 的表示主要有三种类型

1)简单。简单就是像JavaScript语法一样,可以是字符串、数值、null、布尔值,但是不能是undefined。

2)对象。表示一组有序的键值对,每一组键值对可以是简单、复杂的数据类型。

3)数组。表示一组有序值的列表。数组的值可以是简单、对象、或数组。

简单值

JSON形式的简单值:数值,如:2。字符串:“hello world”。字符串必须用双引号。

  JSON字符串写法,如:var strJson=‘2’;转化为JSON ,var num=JSON.parse(strJson);

在实际应用中更实用的是对象形式

对象

JSON对象以JavaScript对象字面量的对比

var person={

  name:'jenny',

  age:26

}

JSON对象

{

  “name":"jenny",

  "age:26

}

属性值可以是简单值,也可以是复杂类型值,

如:{

  ”name":"jenny",

  "age":26,

  “school":{

    "name":"xxxx",

    "Adress":"xxxxx"

  }

}

注意:属性名一样,必须是属于不同对象中

  数组

JavaScript数组字面量:var arr=[1,2,"a","b"];

JSON数组:[1,2,"a","b"];

较复杂的JSON数组,常用的形式是在数组中放入对象。

如:[

  {

    "name":"zhangsan",

    "age":12,

    student:true;

    authors:[

      "one",1,false

    ]

  },{

    "name":"lisi",

    "age":34,

    student:false,

    authors:[

      "tow",2,true

    ]

  }

]

JSON获取属性值与JavaScript类型。

JSON对象

json对象有两个方法:stringify()和parse()。

stringify():把JavaScript对象序列化为Json字符串

parse():把json字符串解析为JavaScript对象。

stringify()可以传递两个参数,第一个参数是一个过滤器,可以是一个数组。也可以是一个函数。第二个参数是一个选项,是否在json字符串中保留缩进。

1.过滤器

 参数为数组形式: 如:var obj={  

     "name":"张三",

      "age":25,

    "school":[

      1,2,3  

    ]

  }

  var textJson=JSON.stringify(obj,["name","age"]);

  说明:支队name和age属性进行序列化。得到的结果:{”name":"张三","age":25}

  参数为函数形式:函数接受连个参数,分别是属性名和属性值,根据属性名,对要序列的的属性进行处理。返回了undefined,相应的属性会被忽略。

如:上面对象

  var textJsonJSON.stringify(obj,function(key,value){

      switch(key){

        case "name" :return "李四";

        case "age":return 34;

        case "school" value.join(",");

        default: return value;

      }

  });

返回的结果是{”name":"李四","age":34,"school":"1,2,3"}

2.缩进

  var text=JSON.stringify(obj,null,4);//缩进4个空格,缩进是为了提高可读性。最大缩进空格为10,大于10将视为10个。

3.toJSON方法

  有时候,JSON.stringify()不能满足对某些对象进行自定义序列化的需求。就可以通过调用toSON()方法。返回其自身的JSON数据格式。

  当一个对象中存在toJSON方法时,则在调用JSON.stringify()时,将按toJSON的结果来序列化。

  说明:对象被序列化的执行顺序

  1)toJSON方法

  2)第二个参数(数组或函数)

  3)第三个参数执行格式化。

parse()解析

parse()也可接受一个参数,该参数是一个函数,与stringify()的过滤类似,

如: var textJson='{"name";"张三","age":23}';

  var obj=JSON.parse(textJson,function(key,value){

    switch(key){

      case "name": return "李四";

      case "age" return: 34;

      default : return value;

    }

  });

  得到的obj对象为 obj={"name":"李四”,"age":34},第二个参数将篡改JSON字符串的属性值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: