Jika saya mengonversi objek di atas ke menggunakan JSON var jSonString = JSON.stringify(testObject);
, apa perbedaan antara 2 (JS obj dan JSON)?
JSON adalah format pertukaran data. Ini adalah standar yang menjelaskan bagaimana daftar yang diurutkan dan peta yang tidak berurutan, string boolean, dan angka dapat direpresentasikan dalam string. Sama seperti XML dan YAML adalah cara untuk menyampaikan informasi terstruktur antar bahasa, JSON juga sama. Objek JavaScript di sisi lain adalah tipe fisik. Sama seperti array PHP, kelas C ++ / struct, objek JavaScript adalah tipe internal untuk JavaScript.
Ini sebuah cerita. Bayangkan Anda membeli beberapa perabot dari toko, dan Anda menginginkannya dikirim. Namun satu-satunya yang tersisa dalam stok adalah model tampilan, tetapi Anda setuju untuk membelinya.
Di toko, laci yang Anda beli adalah benda hidup:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
Namun, Anda tidak dapat mengirim peti laci di pos, sehingga Anda membongkarnya (baca, sesuaikan). Sekarang tidak berguna dalam hal furnitur. Sekarang JSON. Ini dalam bentuk paket datar.
{"color":"red","numberOfDrawers":4}
Ketika Anda menerimanya, Anda kemudian membangun kembali lemari laci (baca, parsing). Sekarang kembali dalam bentuk objek.
Alasan di balik JSON / XML dan YAML adalah untuk memungkinkan data ditransfer antara bahasa pemrograman dalam format yang dapat dipahami oleh kedua bahasa yang berpartisipasi; Anda tidak bisa memberikan PHP atau C ++ objek JavaScript Anda secara langsung; karena setiap bahasa merepresentasikan objek secara berbeda di bawah kap. Namun, karena kami telah merender objek menjadi notasi JSON; yaitu cara standar untuk merepresentasikan data, kita dapat mengirimkan representasi JSON objek ke bahasa lain (C ++, PHP), mereka dapat membuat ulang objek JavaScript yang kita miliki ke objek mereka sendiri berdasarkan pada representasi JSON objek.
Penting untuk dicatat bahwa JSON tidak dapat mewakili fungsi atau tanggal. Jika Anda mencoba untuk mengencangkan objek dengan anggota fungsi, fungsi tersebut akan dihapus dari representasi JSON. Tanggal akan dikonversi menjadi string;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"