cari
Rumahhujung hadapan webtutorial jsSerialization JSON Cross-Browser di JavaScript

Serialization JSON Cross-Browser di JavaScript Serialization JSON Cross-Browser di JavaScript Dalam artikel ini, kami akan mengkaji manfaat Serialization Object, pelaksanaan pelayar semasa, dan membangunkan beberapa kod yang dapat membantu projek berasaskan Ajax anda. Anggapkan kita mempunyai objek JavaScript yang agak kompleks yang ditakrifkan menggunakan notasi literal:

var obj1 = {
	b1: true,
	s1: "text string",
	n1: 12345,
	n2: null,
	n3: undefined,
	a1: [ 1,1,2,3,5,8, [13, 21, 34] ],
	o1: {
		a: [3, 2, 1],
		b: {
			c: 42,
			d: [ 3.14, 1.618 ]
		}
	}
};
Kami boleh mengakses mana -mana sifat objek dalam pelbagai cara:
obj1.s1;				// returns "text string"
obj1["n1"];				// returns 12345
obj1.a1[6][1];			// returns 21
obj1["o1"]["b"]["c"];	// returns 42
Objek ini juga boleh diserahkan kepada fungsi dan kaedah JavaScript dan bukannya menentukan hujah individu. Barang berguna. Walau bagaimanapun, bagaimana jika kita perlu menyimpan objek ini dalam kuki? Bagaimana jika kita perlu lulus objek ke perkhidmatan web melalui permintaan AJAX? Bagaimana jika perkhidmatan web itu mahu mengembalikan versi objek yang diubah suai? Jawapannya adalah bersiri:
  • Serialization adalah proses mengubah sebarang objek ke dalam rentetan.
  • de-serialization bertukar rentetan itu kembali ke objek asli.
Mungkin notasi rentetan terbaik yang boleh kita gunakan dalam JavaScript ialah JSON - Notasi Objek JavaScript. JSON adalah format interchange data ringan yang diilhamkan oleh notasi literal objek JavaScript seperti yang ditunjukkan di atas. JSON disokong oleh PHP dan banyak bahasa pelayan lain (rujuk json.org). Terdapat dua kaedah JSON di JavaScript:
  1. json.stringify ( obj ) - Menukar objek JavaScript ke rentetan JSON
  2. json.parse ( str ) - Menukar tali json kembali ke objek JavaScript
Malangnya, penyemak imbas yang sangat sedikit menyediakan kaedah ini. Sehingga kini, hanya Firefox 3.5, Internet Explorer 8.0 dan Chrome 3 beta menawarkan sokongan asli. Beberapa perpustakaan JavaScript menawarkan alat JSON mereka sendiri (seperti Yui ) tetapi ramai yang tidak (termasuk jQuery). Walau bagaimanapun, semuanya tidak hilang - JavaScript adalah fleksibel dan kami boleh melaksanakan kaedah JSON Stringify dan Purse apabila pelayar memerlukannya. Di bahagian atas kod kami, kami akan membuat pemboleh ubah JSON yang menunjuk kepada objek JSON asli atau objek kosong jika tidak tersedia:
var JSON = JSON || {};
Kod JSON.Stringify sedikit lebih kompleks:
// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {

	var t = typeof (obj);
	if (t != "object" || obj === null) {

		// simple data type
		if (t == "string") obj = '"'+obj+'"';
		return String(obj);

	}
	else {

		// recurse array or object
		var n, v, json = [], arr = (obj && obj.constructor == Array);

		for (n in obj) {
			v = obj[n]; t = typeof(v);

			if (t == "string") v = '"'+v+'"';
			else if (t == "object" && v !== null) v = JSON.stringify(v);

			json.push((arr ? "" : '"' + n + '":') + String(v));
		}

		return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
	}
};
Jika json.stringify tidak tersedia, kami menentukan fungsi baru yang menerima parameter OBJ tunggal. Parameter ini boleh menjadi satu nilai, array, atau objek kompleks seperti OBJ1 di atas. Kod mengkaji jenis objek. Nilai tunggal dikembalikan dengan serta -merta dan hanya rentetan yang diubahsuai untuk meletakkan petikan di sekitar nilai. Sekiranya array atau objek diluluskan, kod itu melangkah melalui setiap harta:
  1. nilai rentetan mempunyai petikan ditambah.
  2. tatasusunan kanak -kanak atau objek secara rekursif diserahkan kepada fungsi json.stringify.
  3. Nilai yang dihasilkan ditambahkan pada akhir array JSON [] sebagai rentetan "Nama: Nilai", atau hanya satu nilai untuk item array.
  4. Akhirnya, array JSON ditukarkan ke senarai koma-Delimited dan dikembalikan dalam array [] atau objek {}kurungan yang diperlukan.
Jika sakit otak anda, anda akan gembira mengetahui bahawa kod JSON.Parse lebih mudah:
var obj1 = {
	b1: true,
	s1: "text string",
	n1: 12345,
	n2: null,
	n3: undefined,
	a1: [ 1,1,2,3,5,8, [13, 21, 34] ],
	o1: {
		a: [3, 2, 1],
		b: {
			c: 42,
			d: [ 3.14, 1.618 ]
		}
	}
};
Ini menukarkan rentetan JSON ke objek menggunakan eval (). Sebelum anda tergesa -gesa untuk melaksanakan fungsi Serialization JSON dalam semua projek anda, terdapat beberapa gotchas:
  • Kod ini sengaja disimpan pendek. Ia akan berfungsi dalam kebanyakan situasi, tetapi terdapat perbezaan yang halus dengan kaedah asli Json.Stringify dan JSON.Parse.
  • tidak setiap objek JavaScript disokong. Sebagai contoh, tarikh () akan mengembalikan objek kosong, sedangkan kaedah JSON asli akan menyandarkannya ke rentetan tarikh/masa.
  • Kod ini akan bersiri fungsi, mis. var obj1 = {myfunc: function (x) {}}; sedangkan kaedah JSON asli tidak akan.
  • objek yang sangat besar akan membuang ralat rekursi.
  • Penggunaan eval () dalam json.parse secara semula jadi berisiko. Ia tidak akan menjadi masalah jika anda memanggil perkhidmatan web anda sendiri, tetapi panggilan ke aplikasi pihak ketiga secara tidak sengaja atau sengaja memecahkan halaman anda dan menyebabkan masalah keselamatan. Sekiranya perlu, parser JavaScript yang lebih selamat (tetapi lebih lama dan lebih perlahan) boleh didapati dari json.org.
Saya harap anda dapati kod itu berguna. Jangan ragu untuk menggunakannya dalam projek anda sendiri. Fail sumber:
  • Halaman demonstrasi Serialization JSON
  • kod javascript penuh (json-serialisasi.js)
  • Muat turun kod penuh dalam fail zip
Bacaan Berkaitan:
  • bagaimana untuk membangunkan plugin jQuery
  • Cara Membina Plugin JQuery Textarea Auto-Expanding
akan datang: Aplikasi berguna Serialization JSON ...

soalan yang sering ditanya mengenai siri JavaScript JSON

Apakah Serialisasi JSON dalam JavaScript? Ini dilakukan dengan menggunakan kaedah JSON.Stringify (). Rentetan JSON yang dihasilkan boleh disimpan atau dihantar ke pelayan. Ini adalah proses penting dalam pembangunan web kerana ia membolehkan data dengan mudah dipindahkan antara klien dan pelayan. Berikut adalah contoh mudah:

biarkan obj = {name: "John", umur: 30, bandar: "new york"};

biarkan myjson = json.stringify (obj); 'Myjson'.

Bolehkah saya bersiri di JavaScript? Kaedah ini berfungsi bukan sahaja dengan susunan mudah, tetapi juga dengan tatasusunan objek. Berikut adalah contoh:


let arr = [1, 2, 3, 4];
biarkan myjson = json.stringify (arr);

bagaimana saya menafikan rentetan JSON dalam javascript?

Deserialization adalah proses menukar rentetan JSON kembali ke objek JavaScript. Ini dilakukan dengan menggunakan kaedah JSON.Parse (). Berikut adalah contoh:

biarkan myjson = '{"name": "John", "umur": 30, "City": "New York"}'; Json.parse ().

Apa yang berlaku jika saya cuba untuk bersiri fungsi dalam JavaScript? Ini kerana JSON adalah format data dan tidak menyokong kebolehan pelaksanaan JavaScript. Ini membolehkan anda menyaring nilai-nilai atau mengubahnya semasa proses bersiri. Ini dilakukan dengan menyediakan nombor sebagai hujah ketiga kepada json.stringify (), yang mewakili bilangan ruang yang digunakan untuk lekukan. Secara lalai, apabila anda bersiri objek tarikh dalam JavaScript, ia akan ditukar kepada rentetan dalam format ISO. Apabila anda menafikannya, ia tidak akan ditukar secara automatik ke objek tarikh. Anda perlu menukarnya secara manual dengan menggunakan pembina tarikh baru (). Apabila objek mempunyai kaedah tojson (), json.stringify () memanggilnya dan bersiri nilai yang dikembalikan, bukannya objek asal. JavaScript boleh mewakili nombor dengan tepat sehingga 2^53 - 1. Jika anda perlu bersiri nombor yang lebih besar, anda mungkin perlu menukarnya ke rentetan terlebih dahulu untuk mengelakkan kehilangan ketepatan.

Atas ialah kandungan terperinci Serialization JSON Cross-Browser di JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Java vs JavaScript: Perbandingan terperinci untuk pemajuJava vs JavaScript: Perbandingan terperinci untuk pemajuMay 16, 2025 am 12:01 AM

JavaandjavascriptaredistinctLanguages: javaisusedforenterpriseandMobileApps, whilvascriptisforinteractivewebpages.1) javaisco mpiled, statiktyped, andrunsonjvm.2) javascriptisinterinterpreted, dinamicallytyped, andrunsinbrowsersornode.js.3) javausesoopwithcl

Jenis data JavaScript: Adakah terdapat perbezaan antara penyemak imbas dan nodej?Jenis data JavaScript: Adakah terdapat perbezaan antara penyemak imbas dan nodej?May 14, 2025 am 12:15 AM

Jenis data teras JavaScript adalah konsisten dalam penyemak imbas dan node.js, tetapi ditangani secara berbeza dari jenis tambahan. 1) Objek global adalah tetingkap dalam penyemak imbas dan global di Node.js. 2) Objek penampan unik Node.js, digunakan untuk memproses data binari. 3) Terdapat juga perbezaan prestasi dan pemprosesan masa, dan kod perlu diselaraskan mengikut persekitaran.

Komen JavaScript: Panduan untuk menggunakan // dan / * * /Komen JavaScript: Panduan untuk menggunakan // dan / * * /May 13, 2025 pm 03:49 PM

JavaScriptusestWotypesofcomments: Single-line (//) danMulti-line (//)

Python vs JavaScript: Analisis Perbandingan untuk PemajuPython vs JavaScript: Analisis Perbandingan untuk PemajuMay 09, 2025 am 12:22 AM

Perbezaan utama antara Python dan JavaScript ialah sistem jenis dan senario aplikasi. 1. Python menggunakan jenis dinamik, sesuai untuk pengkomputeran saintifik dan analisis data. 2. JavaScript mengamalkan jenis yang lemah dan digunakan secara meluas dalam pembangunan depan dan stack penuh. Kedua -duanya mempunyai kelebihan mereka sendiri dalam pengaturcaraan dan pengoptimuman prestasi yang tidak segerak, dan harus diputuskan mengikut keperluan projek ketika memilih.

Python vs JavaScript: Memilih alat yang sesuai untuk pekerjaanPython vs JavaScript: Memilih alat yang sesuai untuk pekerjaanMay 08, 2025 am 12:10 AM

Sama ada untuk memilih Python atau JavaScript bergantung kepada jenis projek: 1) Pilih Python untuk Sains Data dan Tugas Automasi; 2) Pilih JavaScript untuk pembangunan front-end dan penuh. Python disukai untuk perpustakaannya yang kuat dalam pemprosesan data dan automasi, sementara JavaScript sangat diperlukan untuk kelebihannya dalam interaksi web dan pembangunan stack penuh.

Python dan javascript: memahami kekuatan masing -masingPython dan javascript: memahami kekuatan masing -masingMay 06, 2025 am 12:15 AM

Python dan JavaScript masing -masing mempunyai kelebihan mereka sendiri, dan pilihan bergantung kepada keperluan projek dan keutamaan peribadi. 1. Python mudah dipelajari, dengan sintaks ringkas, sesuai untuk sains data dan pembangunan back-end, tetapi mempunyai kelajuan pelaksanaan yang perlahan. 2. JavaScript berada di mana-mana dalam pembangunan front-end dan mempunyai keupayaan pengaturcaraan tak segerak yang kuat. Node.js menjadikannya sesuai untuk pembangunan penuh, tetapi sintaks mungkin rumit dan rawan kesilapan.

Inti JavaScript: Adakah ia dibina di atas C atau C?Inti JavaScript: Adakah ia dibina di atas C atau C?May 05, 2025 am 12:07 AM

Javascriptisnotbuiltoncorc; it'saninterpretedlanguagethatrunsonenginesoftenwritteninc .1) javascriptwasdesignedasalightweight, interpratedlanguageforwebbrowsers.2)

Aplikasi JavaScript: Dari Front-End ke Back-EndAplikasi JavaScript: Dari Front-End ke Back-EndMay 04, 2025 am 12:12 AM

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
<🎜> obscur: Ekspedisi 33 - Cara mendapatkan pemangkin Chroma yang sempurna
2 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.