国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

淺談JSON的數據交換、緩存問題和同步問題

2024-07-13 10:15:26
字體:
來源:轉載
供稿:網友

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 LRJSON字符串-->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 LRJSON對象-->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的數據交換、緩存問題和同步問題的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡嘎县| 通州市| 黑山县| 镶黄旗| 清丰县| 固阳县| 闽侯县| 吉首市| 从化市| 丰顺县| 永康市| 方正县| 曲松县| 齐河县| 格尔木市| 克什克腾旗| 保定市| 双辽市| 增城市| 武城县| 临城县| 陆河县| 台中市| 勐海县| 土默特右旗| 安西县| 晴隆县| 松潘县| 石家庄市| 巴林右旗| 琼结县| 刚察县| 格尔木市| 白朗县| 西乌珠穆沁旗| 商水县| 吉林省| 禄劝| 玉龙| 临西县| 林州市|