JSONのデータ交換、キャッシュ問題、同期問題について

5667 ワード

JSON軽量レベルのデータ交換フォーマット
JSONの解析速度はXMLに比べて速く,文書はより小さい.
JSONのフォーマット
{属性名:属性値、属性名:属性値、...}
属性名のタイプはstring,number,boolean,null,objectであり、属性名は二重引用符で囲まなければならない.属性値が文字列であれば、二重引用符で囲まなければならない.
JSON表示配列
フォーマット:[value,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 fs=new ArrayList();
		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   ------
"+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 ------
"+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 friends=(List) 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のデータ交換、キャッシュの問題、同期の問題について説明したすべての内容であり、皆さんの役に立つことを願っています.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!