中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

淺談JSON的數(shù)據(jù)交換、緩存問題和同步問題

JSON輕量級的數(shù)據(jù)交換格式

創(chuàng)新互聯(lián)主營新平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),新平h5小程序設(shè)計(jì)搭建,新平網(wǎng)站營銷推廣歡迎新平等地區(qū)企業(yè)咨詢

相對于XML來說,JSON的解析速度更快,文檔更小。

JSON的格式

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

屬性名的類型可以是string,number,boolean,null,object,且屬性名必須用雙引號引起來,如果屬性值是字符串,也必須用雙引號括起來。

JSON表示數(shù)組

格式:[value,value,value],其中value可以是基本的數(shù)據(jù)類型,也可以是object類型、數(shù)組類型

數(shù)組類型

[ 
{“name”:”yangjq”,”age”:22}, 
{“name”:”andreny”,”age”:21} 
];
對象類型

[ 
“name”:”andreny”, 
“hobby”:[“sing”,”dance”,”eat”] 
]

轉(zhuǎn)換

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

1.使用JavaScript的原生函數(shù):eval(),不過此方法有危險(xiǎn),使用需謹(jǐn)慎。

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

2.使用原生對象JSON提供的parse()方法,如果這個(gè)對象無效,說明你瀏覽器版本太低了?。?!

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對象轉(zhuǎn)換為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在發(fā)送請求時(shí)涉及的緩存問題

==注==:IE瀏覽器提供的AJAX對象在發(fā)送請求時(shí)會先檢查是否訪問過該地址,如果訪問過,那么瀏覽器就不再發(fā)送請求。

不同瀏覽器對待緩存的機(jī)制

Chrome 繼續(xù)發(fā)送請求
Firefox 繼續(xù)發(fā)送請求
IE瀏覽器 不再發(fā)送請求

怎么防止瀏覽器因?yàn)榫彺娑话l(fā)送請求呢?

在請求地址后面添加一個(gè)隨機(jī)數(shù)

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

發(fā)送post請求

關(guān)于同步的一些問題

在發(fā)送同步請求后,瀏覽器要等待服務(wù)器的響應(yīng)到達(dá)后才能繼續(xù)在頁面中操作。AJAX在發(fā)送同步請求的時(shí)候,瀏覽器會鎖定當(dāng)前頁面。

測試代碼

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對象轉(zhuǎn)換為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集合轉(zhuǎn)換為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集合轉(zhuǎn)換為JSON字符串------\n"+fs);
		System.out.println(ja.toString());
	}
	// JSON字符串轉(zhuǎn)換為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字符串轉(zhuǎn)換為java對象------\n"+obj.toString());
		System.out.println(friend);
	}
	// JSON字符串轉(zhuǎn)換為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字符串轉(zhuǎn)換為java集合---------");
		for (Friend f:friends){
			System.out.println(f);
		}
	}
}

運(yùn)行結(jié)果:

---------------
{"age":23,"name":"andreny"}
-----JSON集合轉(zhuǎn)換為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字符串轉(zhuǎn)換為java對象------
{"name":"andreny","age":22}
Friend [name=andreny, age=22]
--------JSON字符串轉(zhuǎn)換為java集合---------
Friend [name=yangjq, age=22]
Friend [name=andreny, age=23]

總結(jié)

以上就是本文關(guān)于淺談JSON的數(shù)據(jù)交換、緩存問題和同步問題的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

文章標(biāo)題:淺談JSON的數(shù)據(jù)交換、緩存問題和同步問題
文章路徑:http://www.rwnh.cn/article30/jdcjso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、網(wǎng)站策劃、定制網(wǎng)站、電子商務(wù)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
平凉市| 稷山县| 沁水县| 诏安县| 郓城县| 泌阳县| 宣化县| 巴青县| 密云县| 从化市| 神农架林区| 荃湾区| 南涧| 石林| 德惠市| 宜兰市| 兰坪| 无为县| 大悟县| 夹江县| 常熟市| 汝南县| 元谋县| 昭觉县| 庆安县| 得荣县| 宁武县| 永靖县| 合肥市| 象州县| 泰和县| 迁安市| 巴中市| 徐闻县| 团风县| 寻乌县| 炎陵县| 东安县| 闸北区| 嘉善县| 萝北县|