温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

浅谈JSON的数据交换、缓存问题和同步问题

发布时间:2020-10-04 12:12:24 来源:脚本之家 阅读:194 作者:人圭先生 栏目:编程语言

JSON轻量级的数据交换格式

相对于XML来说,JSON的解析速度更快,文档更小。

JSON的格式

{属性名:属性值,属性名:属性值,……}

属性名的类型可以是string,number,boolean,null,object,且属性名必须用双引号引起来,如果属性值是字符串,也必须用双引号括起来。

JSON表示数组

格式:[value,value,value],其中value可以是基本的数据类型,也可以是object类型、数组类型

 数组类型 [ {“name”:”yangjq”,”age”:22}, {“name”:”andreny”,”age”:21} ];
 对象类型 [ “name”:”andreny”, “hobby”:[“sing”,”dance”,”eat”] ]

转换

 graph LR JSON字符串-->JavaScript对象

1.使用JavaScript的原生函数:eval(),不过此方法有危险,使用需谨慎。

 var str={"name":"yangjq","age":23}; var obj=eval("("+str+")"); alert(obj.name);

2.使用原生对象JSON提供的parse()方法,如果这个对象无效,说明你浏览器版本太低了!!!

 var str={"name":"andreny","age":22}; var obj=JSON.parse(str); alert(obj.name);

3.使用JSON.js文件为字符串增加的方法。

 var str={"name":"逗比的二哈","age":9}; var obj=str.parseJSON(); alert(obj.name);

JSON对象转换为JSON字符串

 graph LR JSON对象-->JSON字符串

利用JSON官方提供的API:JSONObject,JSONArray提供的方法

 //第一种方式 Emp emp=new Emp("1","andreny","man"); JSONObject obj=JSONObject.fromObject(emp); String jsonStr=obj.toString(); //第二种方式 var obj={"name":"yangjq","age":23}; var str1=obj.toJSONString(); //第三种方式 var str2=obj.JSON.stringify();

AJAX在发送请求时涉及的缓存问题

==注==:IE浏览器提供的AJAX对象在发送请求时会先检查是否访问过该地址,如果访问过,那么浏览器就不再发送请求。

不同浏览器对待缓存的机制

Chrome 继续发送请求
Firefox 继续发送请求
IE浏览器 不再发送请求

怎么防止浏览器因为缓存而不发送请求呢?

在请求地址后面添加一个随机数

 xhr.open('get','getNumber.do?+Math.random(),true);

发送post请求

关于同步的一些问题

在发送同步请求后,浏览器要等待服务器的响应到达后才能继续在页面中操作。AJAX在发送同步请求的时候,浏览器会锁定当前页面。

测试代码

 package yangjq.test; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import yangjq.entity.Friend; public class JSONtest {	public static void main(String[] args) {	System.out.println("---------------");	test1();	test2();	test3();	test4();	}	// java对象转换为json字符串	public static void test1(){	Friend f=new Friend();	f.setName("andreny");	f.setAge(23);	JSONObject obj=JSONObject.fromObject(f);	System.out.println(obj.toString());	}	// JSON集合转换为JSON字符串	public static void test2(){	List<Friend> fs=new ArrayList<Friend>();	for (int i=0;i<10;i++){	Friend f=new Friend();	f.setName("yangjq"+i);	f.setAge(12+i);	fs.add(f);	}	JSONArray ja=JSONArray.fromObject(fs);	System.out.println("-----JSON集合转换为JSON字符串------\n"+fs);	System.out.println(ja.toString());	}	// JSON字符串转换为java对象	public static void test3(){	String jsonStr="{\"name\":\"andreny\",\"age\":22}";	JSONObject obj=JSONObject.fromObject(jsonStr);	Friend friend=(Friend) JSONObject.toBean(obj,Friend.class);	System.out.println("-------JSON字符串转换为java对象------\n"+obj.toString());	System.out.println(friend);	}	// JSON字符串转换为java集合	public static void test4(){	String jsonStr="[{\"name\":\"yangjq\",\"age\":22}," + "{\"name\":\"andreny\",\"age\":23}]";	JSONArray obj=JSONArray.fromObject(jsonStr);	List<Friend> friends=(List<Friend>) JSONArray.toCollection(obj,Friend.class);	System.out.println("--------JSON字符串转换为java集合---------");	for (Friend f:friends){	System.out.println(f);	}	} }

运行结果:

 --------------- {"age":23,"name":"andreny"} -----JSON集合转换为JSON字符串------ [Friend [name=yangjq0, age=12], Friend [name=yangjq1, age=13], Friend [name=yangjq2, age=14], Friend [name=yangjq3, age=15], Friend [name=yangjq4, age=16], Friend [name=yangjq5, age=17], Friend [name=yangjq6, age=18], Friend [name=yangjq7, age=19], Friend [name=yangjq8, age=20], Friend [name=yangjq9, age=21]] [{"age":12,"name":"yangjq0"},{"age":13,"name":"yangjq1"},{"age":14,"name":"yangjq2"},{"age":15,"name":"yangjq3"},{"age":16,"name":"yangjq4"},{"age":17,"name":"yangjq5"},{"age":18,"name":"yangjq6"},{"age":19,"name":"yangjq7"},{"age":20,"name":"yangjq8"},{"age":21,"name":"yangjq9"}] -------JSON字符串转换为java对象------ {"name":"andreny","age":22} Friend [name=andreny, age=22] --------JSON字符串转换为java集合--------- Friend [name=yangjq, age=22] Friend [name=andreny, age=23]

总结

以上就是本文关于浅谈JSON的数据交换、缓存问题和同步问题的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI