JSON的简单使用
2015-09-13 23:02
851 查看
JSON是JavaScript面向对象语法的一个子集,其 全称为JavaScript Object Notation,是轻量级的数据交换格式。JSON是完全独立的语言,使用标准的语法来和其他编程语言进行数据交换。
一、使用JSON创建对象
JSON创建对象的格式十分简单,类似于java的map对象,语法为:var variable= { key : value},因此,创建JSON对象十分简单。
JSON对象的访问也十分简单,可以使用variable.key进行访问,也可使用类似数组(variable[key])的方式进行访问。下面简单举个例子:
JSON是一种通用的字符串格式语言,在使用上有一些注意事项:对于一些特殊字符,例如双引号、反斜杠等需要使用转义字符"\"进行转义。
使用JSON创建数字类型没有特别的限制,JSON创建的数字支持整数、小数和科记数格式,如下所示<script>
二、序列化和反序列化
序列化和反序列化需要引入json2.js文件,使用JSON.stringify(value,replacer,space)进行序列化,以下举例说明序列化参数的使用:
反序列化的使用:
一、使用JSON创建对象
JSON创建对象的格式十分简单,类似于java的map对象,语法为:var variable= { key : value},因此,创建JSON对象十分简单。
JSON对象的访问也十分简单,可以使用variable.key进行访问,也可使用类似数组(variable[key])的方式进行访问。下面简单举个例子:
<script> function test(){ var myJson = { "name":"张三", "age":20 }; alert("name:" + myJson.name + ",age:" + myJson.age);//使用variable.key访问 alert("name:" + myJson["name"] + ",age:" + myJson["age"]);//使用variable[key]访问 } </script>
JSON是一种通用的字符串格式语言,在使用上有一些注意事项:对于一些特殊字符,例如双引号、反斜杠等需要使用转义字符"\"进行转义。
使用JSON创建数字类型没有特别的限制,JSON创建的数字支持整数、小数和科记数格式,如下所示<script>
<script> function testNumber(){ var json = { type1:12, type2:1.2, type3:1e2//科学记数法 } alert(json.type1 + "," + json.type2 + "," + json.type3); } </script>JSON可以进行嵌套使用,如下所示:
<script> function testNest(){ var json = { name:"张三", age:20, address:{ city:"上海", zipcode:"101010" } } alert("name:" + json.name + ",age:" + json.age + ",city:" + json.address.city + ",zipcode:" + json.address.zipcode); } </script>
二、序列化和反序列化
序列化和反序列化需要引入json2.js文件,使用JSON.stringify(value,replacer,space)进行序列化,以下举例说明序列化参数的使用:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSON的序列化</title> </head> <body onload="serialize();"> </body> <script src="js/json2.js" type="text/javascript"></script> <script> function Person(name,age){ this.name = name; this.age = age; } function serialize(){ var person = new Person("张三",20); //使用JSON.stringify(value, replacer, space);其中第一个参数必选 var personJson = JSON.stringify(person); alert(personJson); /* 当第一个参数为对象,第二个参数为数组时,并且数组中的值和第一个参数的属性相等时,此时,就以数组的值作为key,对象的值作为value进行序列化, 如果数组中没有和对象中的元素的属性相同,则此时结果为{}, */ var array = ["id","name"];//name和Person的name相同,因此结果为{name:'张三'} personJson = JSON.stringify(person, array); alert(personJson); array = ["id","address"];//array中的元素没有和Person中的元素的值相同,此时序列化的结果为{} personJson = JSON.stringify(person, array); alert(personJson); /* 当第一个参数和第二个参数都是数组的时候,这时候第二个参数被忽略,只有第一个参数被序列化 */ var firstArray = ["张三","李四"]; var json = JSON.stringify(firstArray, array); alert(json); /* 当第二个参数为function,则把序列化后的每个对象传进方法中进行处理, 第二个参数处理方法dealSerialize(key,value);此处的key值为"",vaule为第一个参数的对象 */ personJson = JSON.stringify(person, dealSerialize); alert(personJson); /* 第三个参数space:就是用什么来做分隔符的。 如果省略的话,那么显示出来的值就没有分隔符,直接输出来 。 如果是一个数字的话,那么它就定义缩进几个字符,当然如果大于10 ,则默认为10,因为最大值为10。 如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。 如果仅仅是字符串,就在每行输出值的时候把这些字符串附加上去。当然,最大长度也是10个字符。 */ array=["name","age"]; alert(JSON.stringify(person, array,5)); alert(JSON.stringify(person, array,"\t"));//制表符 alert(JSON.stringify(person, array,"test"));//在每一行上前加上字符串 } function dealSerialize(key,value){ return value.age +=1;//对年龄进行+1 } </script> </html>
反序列化的使用:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>parse的使用</title> </head> <body onload="init();"> </body> <script type="text/javascript" src="js/json2.js"></script> <script> function init(){ //此处的字符串变量必须使用''包含,并且key值必须使用""包含 var jsonString = '{"name":"zhangsan","age":20}'; /* JSON.parse(text, reviver),字符串转换为JSON需要两个参数,第一个参数必须 */ var json = JSON.parse(jsonString); alert(json.name + "," + json.age); /* reviver可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况: 如果 reviver 返回一个有效值,则成员值将替换为转换后的值。 如果 reviver 返回它接收的相同值,则不修改成员值。 如果 reviver 返回 null 或 undefined,则删除成员。 */ json = JSON.parse(jsonString,dealReviver); alert(json.name + "," + json.age); } function dealReviver(key,value){ if(typeof value == "number"){ //return value + 1;//age + 1 return null;//age赋值为null }else{ return value; } } </script> </html>
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- XML 与 JSON 优劣对比
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- newtonsoft.json解析天气数据出错解决方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets