English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Breve discussione sui problemi di scambio di dati JSON, cache e sincronizzazione

Formato di scambio dati leggero JSON

Rispetto a XML, JSON ha una velocità di解析 più rapida e documenti più piccoli.

Formato JSON

{"proprietario:valore,proprietario:valore,...}

Il tipo di nome dell'attributo può essere string, number, boolean, null, oggetto, e il nome dell'attributo deve essere racchiuso tra virgolette doppie. Se il valore dell'attributo è una stringa, deve essere racchiuso tra virgolette doppie.

JSON rappresenta un array

Formato:[value,value,value], dove value può essere un tipo di dati base, un tipo di oggetto o un tipo di array

Tipo di array
[ 
{"name":"yangjq","age":22}, 
{"name":"andreny","age":21} 
];
Tipo di oggetto
[ 
"name":"andreny" 
"hobby":["cantare","ballare","mangiare"} 
]

Conversione

graph LR
JSON stringa --> Oggetto JavaScript

1. Utilizzando la funzione nativa di JavaScript: eval(), tuttavia, questo metodo è pericoloso e deve essere utilizzato con cautela.

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

2. Utilizzando il metodo parse() dell'oggetto nativo JSON, se questo oggetto non è valido, significa che la versione del tuo browser è troppo vecchia!!!

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

3. Utilizzare i metodi aggiunti alla stringa da file JSON.js.

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

Convertire un oggetto JSON in una stringa JSON

graph LR
Oggetto JSON --> Stringa JSON

Utilizzando l'API ufficiale JSON fornita da JSON: JSONObject, JSONArray forniscono metodi

//Primo metodo
Emp emp=new Emp("1","andreny","man");
JSONObject obj=JSONObject.fromObject(emp);
String jsonStr=obj.toString();
//Secondo metodo
var obj={"name":"yangjq","age":23};
var str1=obj.toJSONString();
//Terzo metodo
var str2=obj.JSON.stringify();

Problemi di cache coinvolti nell'invio delle richieste AJAX

==Nota==: Quando il browser IE invia una richiesta, controlla prima se è stato visitato l'indirizzo. Se è stato visitato, il browser non invierà la richiesta.

La gestione della cache da parte dei diversi browser

Browser Chrome continua a inviare la richiesta
Browser Firefox continua a inviare la richiesta
Browser IE non invia la richiesta

Come prevenire che il browser non invii la richiesta a causa della cache?

Aggiungere un numero casuale alla fine dell'indirizzo della richiesta

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

Inviare una richiesta POST

Domande su sincronizzazione

Dopo aver inviato la richiesta di sincronizzazione, il browser deve aspettare che la risposta del server arrivi prima di continuare a operare nella pagina. Quando l'AJAX invia una richiesta di sincronizzazione, il browser blocca la pagina corrente.

测试代码

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<Amico> amici=(List<Amico>) JSONArray.toCollection(obj,Amico.class);
		System.out.println("--------Conversione di una stringa JSON in un insieme java---------");
		for (Amico f:amici){
			System.out.println(f);
		}
	}
}

Risultato dell'esecuzione:

---------------
{"age":23,"name":"andreny"}
-----Conversione di un insieme JSON in una stringa JSON------
[Amico [nome=yangjq0, età=12], Amico [nome=yangjq1, età=13], Amico [nome=yangjq2, età=14], Amico [nome=yangjq3, età=15], Amico [nome=yangjq4, età=16], Amico [nome=yangjq5, età=17], Amico [nome=yangjq6, età=18], Amico [nome=yangjq7, età=19], Amico [nome=yangjq8, età=20], Amico [nome=yangjq9, età=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"}]
-------Conversione di stringhe JSON in oggetto Java------
{"name":"andreny","age":22}
Amico [nome=andreny, età=22]
--------Conversione di stringhe JSON in collection Java---------
Amico [nome=yangjq, età=22]
Amico [nome=andreny, età=23]

Sommario

Questo è tutto il contenuto dell'articolo sul discorso di scambio di dati JSON, problemi di cache e sincronizzazione, spero sia utile a tutti. Chi è interessato può continuare a consultare altre sezioni correlate del nostro sito. Siamo aperti a suggerimenti e commenti. Grazie per il supporto degli utenti!

Dichiarazione: il contenuto di questo articolo è stato raccolto da Internet, il copyright è dell'autore originale, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, invia un'e-mail a notice#oldtoolbag.com (sostituisci # con @ durante l'invio dell'e-mail) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente il contenuto sospetto di violazione del copyright.

Ti piace