一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - 淺談JSON的數據交換、緩存問題和同步問題

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

2021-03-11 13:44人圭先生 JAVA教程

這篇文章主要介紹了淺談JSON的數據交換、緩存問題和同步問題,具有一定借鑒價值,需要的朋友可以參考下

JSON輕量級的數據交換格式

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

JSON的格式

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

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

JSON表示數組

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

?
1
2
3
4
5
6
數組類型
 
[
{“name”:”yangjq”,”age”:22},
{“name”:”andreny”,”age”:21}
];
?
1
2
3
4
5
6
對象類型
 
[
“name”:”andreny”,
“hobby”:[“sing”,”dance”,”eat”]
]

轉換

?
1
2
graph LR
JSON字符串-->JavaScript對象

1.使用JavaScript的原生函數:eval(),不過此方法有危險,使用需謹慎。

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

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

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

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

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

JSON對象轉換為JSON字符串

?
1
2
graph LR
JSON對象-->JSON字符串

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

?
1
2
3
4
5
6
7
8
9
10
//第一種方式
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ā)送請求時涉及的緩存問題

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

不同瀏覽器對待緩存的機制

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

怎么防止瀏覽器因為緩存而不發(fā)送請求呢?

在請求地址后面添加一個隨機數

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

發(fā)送post請求

關于同步的一些問題

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

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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);
        }
    }
}

運行結果:

?
1
2
3
4
5
6
7
8
9
10
11
---------------
{"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的數據交換、緩存問題和同步問題的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/sinat_15274667/article/details/51468883

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 动漫人物差差差动漫人物免费观看 | 亚洲国产日韩欧美mv | 鬼惨笑小说| 国产精品va在线观看无 | 大又大又黄又爽免费毛片 | 暖暖的免费观看高清视频韩国 | 3p文两男一女办公室高h | 日韩人成免费网站大片 | 四虎影视永久免费视频观看 | 香蕉tv亚洲专区在线观看 | 国产性片在线观看 | 亚洲图片一区二区 | 欧美日韩在线观看区一二 | 日本福利视频网站 | 无码AV免费精品一区二区三区 | 国产成人综合网亚洲欧美在线 | 日本在线一区二区 | 欧美日韩专区国产精品 | 543精品视频 | 欧美成人第一页 | 国内精品免费一区二区三区 | 天天亚洲综合 | 色综合伊人色综合网站中国 | 紧身裙女教师波多野结衣 | 国产91视频网 | 欧美另类xxx精品人妖 | 大象传媒2021秘密入口 | 日本高清视频在线免费观看 | 亚洲第成色999久久网站 | 国产男女乱淫真视频全程播放 | 深夜福利免费在线观看 | 日本色频 | 99热这里只有精品国产在热久久 | 精品一成人岛国片在线观看 | 国产欧美在线播放 | 亚洲精品国产精品麻豆99 | 99视频免费| 天天做天天爱天天爽综合网 | 久久草香蕉频线观 | 女教师的一级毛片 | 大象传媒2021秘密入口 |