Apa itu JSON? Format pertukaran data yang lebih baik

Notasi Objek JavaScript adalah perwakilan data berstruktur tanpa teks, berdasarkan skema berdasarkan pasangan kunci-nilai dan senarai yang disusun. Walaupun JSON berasal dari JavaScript, ia disokong secara asli atau melalui perpustakaan dalam kebanyakan bahasa pengaturcaraan utama. JSON biasanya, tetapi tidak secara eksklusif, digunakan untuk bertukar maklumat antara pelanggan web dan pelayan web. 

Sejak 15 tahun kebelakangan ini, JSON telah berada di mana-mana di web. Hari ini adalah format pilihan untuk hampir setiap perkhidmatan web yang tersedia untuk umum, dan sering digunakan untuk perkhidmatan web swasta juga.

Populariti JSON juga menghasilkan sokongan JSON asli oleh banyak pangkalan data. Pangkalan data hubungan seperti PostgreSQL dan MySQL kini dihantar dengan sokongan asli untuk menyimpan dan meminta data JSON. Pangkalan data NoSQL seperti MongoDB dan Neo4j juga menyokong JSON, walaupun MongoDB menggunakan versi binari JSON yang sedikit diubahsuai di belakang tabir.

Dalam artikel ini, kita akan melihat JSON dengan cepat dan membincangkan dari mana asalnya, kelebihannya berbanding XML, kekurangannya, kapan anda harus menggunakannya, dan kapan anda harus mempertimbangkan alternatif. Tetapi pertama-tama, mari kita selami apa yang kelihatan seperti JSON dalam latihan.

Contoh JSON

Berikut adalah contoh data yang dikodkan dalam JSON:

{

  "FirstName": "Jonathan",

  "LastName": "Freeman",

  "LoginCount": 4,

  "IsWriter": benar,

  "WorksWith": ["Spantree Technology Group", ""],

  "Haiwan peliharaan": [

    {

      "Nama": "Lilly",

      "Jenis": "Rakun"

    }

  ]

}

Struktur di atas secara jelas menentukan beberapa sifat seseorang. Ini termasuk nama depan dan belakang, berapa kali orang itu melog masuk, sama ada orang ini adalah penulis, senarai syarikat yang bekerja dengannya, dan senarai haiwan peliharaan orang itu (hanya satu, dalam kes ini). Struktur seperti di atas dapat diteruskan dari pelayan ke penyemak imbas web atau aplikasi mudah alih, yang kemudian akan melakukan beberapa tindakan seperti memaparkan data atau menyimpannya untuk rujukan kemudian.

JSON adalah format data generik dengan bilangan jenis nilai minimum: rentetan, nombor, booleans, senarai, objek, dan nol. Walaupun notasi adalah subkumpulan JavaScript, jenis ini diwakili dalam semua bahasa pengaturcaraan umum, menjadikan JSON calon yang baik untuk mengirimkan data melalui jurang bahasa.

Fail JSON

Data JSON disimpan dalam fail yang diakhiri dengan pelanjutan .json. Sesuai dengan etos JSON yang dapat dibaca manusia, ini hanyalah fail teks biasa dan dapat dibuka dan diperiksa dengan mudah. Seperti yang dijelaskan oleh blog SQLizer, ini juga merupakan kunci untuk interoperabilitas JSON yang lebih luas, kerana setiap bahasa yang boleh anda namakan dapat membaca dan memproses fail teks biasa, dan mereka mudah dihantar melalui Internet.

Mengapa saya mesti menggunakan JSON? 

Untuk memahami kegunaan dan kepentingan JSON, kita harus sedikit sebanyak memahami sejarah interaktiviti di web. 

Pada awal tahun 2000an, interaktiviti di web mula berubah. Pada masa itu, penyemak imbas berfungsi terutamanya sebagai pelanggan bodoh untuk memaparkan maklumat, dan pelayan melakukan semua kerja keras untuk menyiapkan kandungan untuk dipaparkan. Ketika pengguna mengklik pautan atau butang di penyemak imbas, permintaan akan dikirim ke pelayan, pelayan akan menyiapkan maklumat yang diperlukan sebagai HTML, dan penyemak imbas akan menjadikan HTML sebagai halaman baru. Pola ini lambat dan tidak cekap, memerlukan penyemak imbas untuk membuat semula semua yang ada di halaman walaupun hanya bahagian halaman yang telah berubah.

Kerana muat semula halaman penuh mahal, pembangun web mencari teknologi yang lebih baru untuk meningkatkan pengalaman pengguna secara keseluruhan. Sementara itu, kemampuan membuat permintaan web di latar belakang ketika halaman sedang diperlihatkan, yang baru-baru ini diperkenalkan di Internet Explorer 5, terbukti menjadi pendekatan yang layak untuk memuat data secara bertahap untuk ditampilkan. Daripada memuatkan semula keseluruhan isi halaman, mengklik butang muat semula akan memicu permintaan web yang akan dimuat di latar belakang. Ketika isinya dimuat, data dapat dimanipulasi, disimpan, dan ditampilkan di halaman menggunakan JavaScript, bahasa pengaturcaraan universal di penyemak imbas.

REST vs SOAP: Sambungan JSON

Awalnya, data ini dipindahkan dalam format XML (lihat di bawah untuk contoh) menggunakan protokol pesanan yang disebut SOAP (Simple Object Access Protocol). Tetapi XML verbose dan sukar dikendalikan dalam JavaScript. JavaScript sudah memiliki objek, yang merupakan cara untuk mengekspresikan data dalam bahasa, jadi Douglas Crockford mengambil subset ungkapan itu sebagai spesifikasi untuk format pertukaran data baru dan dijuluki sebagai JSON. JSON jauh lebih mudah bagi orang untuk membaca dan penyemak imbasnya dihuraikan.

Sepanjang tahun 00-an, teknologi perkhidmatan Web lain, yang disebut Perwakilan Negara Transfer, atau REST, mulai menyalip SOAP untuk tujuan memindahkan data. Salah satu kelebihan besar pengaturcaraan menggunakan REST API ialah anda dapat menggunakan pelbagai format data - bukan hanya XML, tetapi JSON dan HTML juga. Oleh kerana pembangun web lebih memilih JSON daripada XML, mereka juga memilih REST berbanding SOAP. Seperti yang Kostyantyn Kharchenko letakkan di blog Svitla, "Dalam banyak hal, kejayaan REST adalah kerana format JSON kerana penggunaannya yang mudah di pelbagai platform."

Hari ini, JSON adalah standard de-facto untuk pertukaran data antara pelanggan web dan mudah alih dan perkhidmatan back-end. 

JSON vs XML

Seperti yang dinyatakan di atas, alternatif utama untuk JSON adalah XML. Walau bagaimanapun, XML menjadi semakin jarang berlaku dalam sistem baru, dan mudah untuk mengetahui sebabnya. Berikut adalah versi data yang anda lihat di atas, kali ini dalam XML:

  Jonathan

  Orang Bebas

  4

  benar

    Kumpulan Teknologi Spantree

      Lilly

      Rakun

Selain menjadi lebih verbose (tepat dua kali sebagai verbose dalam hal ini), XML juga memperkenalkan beberapa kekaburan ketika menguraikan struktur data yang sesuai dengan JavaScript. Menukar XML ke objek JavaScript boleh mengambil dari puluhan hingga ratusan baris kod dan akhirnya memerlukan penyesuaian berdasarkan objek tertentu yang diuraikan. Menukar JSON ke objek JavaScript memerlukan satu baris kod dan tidak memerlukan pengetahuan sebelumnya mengenai objek yang dihuraikan.

Batasan JSON

Walaupun JSON adalah format data yang agak ringkas dan fleksibel yang mudah digunakan dalam banyak bahasa pengaturcaraan, terdapat beberapa kekurangan pada format tersebut. Berikut adalah lima had utama: 

  1. Tiada skema. Di satu pihak, ini bermakna anda mempunyai fleksibiliti sepenuhnya untuk mewakili data dengan cara yang anda mahukan. Sebaliknya, ini bermakna anda boleh membuat data mishapen secara tidak sengaja dengan mudah.
  2. Hanya satu jenis nombor: format floating-point ketepatan berkembar IEEE-754. Itu cukup banyak, tetapi ini bermaksud bahawa anda tidak dapat memanfaatkan jenis nombor yang pelbagai dan bernuansa yang terdapat dalam banyak bahasa pengaturcaraan.
  3. Tiada jenis tarikh. Peninggalan ini bermaksud pemaju mesti menggunakan rentetan perwakilan tarikh, yang membawa kepada perbezaan format, atau mesti mewakili tarikh dalam bentuk milisaat sejak zaman itu (1 Januari 1970).
  4. Tiada komen. Ini menjadikan mustahil untuk memberi penjelasan pada bidang sebaris, memerlukan dokumentasi tambahan dan meningkatkan kemungkinan salah faham.
  5. Kata Kerja. Walaupun JSON kurang verbose daripada XML, itu bukan format pertukaran data yang paling ringkas. Untuk perkhidmatan dengan kelantangan tinggi atau tujuan khas, anda ingin menggunakan format data yang lebih cekap.

Bilakah saya harus menggunakan JSON?

Sekiranya anda menulis perisian yang berkomunikasi dengan penyemak imbas atau aplikasi mudah alih asli, anda harus menggunakan JSON sebagai format data. Menggunakan format seperti XML adalah pilihan yang ketinggalan zaman dan bendera merah untuk bakat depan dan mudah alih yang anda ingin menarik.

Sekiranya komunikasi antara pelayan ke pelayan, anda mungkin lebih baik menggunakan kerangka bersiri seperti Apache Avro atau Apache Thrift. JSON bukanlah pilihan yang buruk di sini, dan mungkin tepat seperti yang anda perlukan, tetapi jawapannya tidak begitu jelas untuk komunikasi web dan mudah alih.

Sekiranya anda menggunakan pangkalan data NoSQL, anda pasti terjebak dengan apa sahaja yang diberikan oleh pangkalan data kepada anda. Dalam pangkalan data hubungan yang menyokong JSON sebagai jenis, peraturan praktik yang baik adalah menggunakannya sesedikit mungkin. Pangkalan data hubungan telah disesuaikan untuk data berstruktur yang sesuai dengan skema tertentu. Walaupun kebanyakan sekarang menyokong data yang lebih fleksibel dalam bentuk JSON, anda dapat menjangkakan prestasi meningkat ketika meminta harta benda dalam objek JSON tersebut.

JSON adalah format de facto di mana-mana untuk menghantar data antara pelayan web dan penyemak imbas dan aplikasi mudah alih. Reka bentuk dan fleksibiliti yang mudah menjadikannya mudah dibaca dan difahami, dan dalam kebanyakan kes, mudah dimanipulasi dalam bahasa pengaturcaraan pilihan anda. Kekurangan skema yang ketat memungkinkan fleksibiliti format, tetapi fleksibiliti itu kadang-kadang menyukarkan untuk memastikan bahawa anda membaca dan menulis JSON dengan betul.

Pengurai JSON

Bahagian kod aplikasi yang mengubah data yang disimpan sebagai JSON menjadi format yang dapat digunakan aplikasi disebut parser. JavaScript, seperti yang anda harapkan, merangkumi penghurai asli, kaedah JSON.parse ().

Anda mungkin perlu melakukan lebih banyak kerja untuk bekerja dengan JSON dalam bahasa yang sangat ditaip seperti Scala atau Elm, tetapi penggunaan JSON yang meluas bermaksud terdapat perpustakaan dan utiliti untuk membantu anda melalui semua bahagian yang paling sukar. 

Laman web json.org merangkumi senarai perpustakaan kod yang komprehensif yang boleh anda gunakan untuk menghurai, menjana, dan memanipulasi JSON, dalam bahasa yang pelbagai seperti Python, C #, dan COBOL.

Utiliti JSON

Sekiranya anda ingin memanipulasi atau memeriksa data yang dikodkan JSON secara langsung, tanpa menulis kod sendiri, terdapat sebilangan utiliti dalam talian yang dapat membantu anda. Semua setara programatik di pustaka kod yang dipautkan di atas, tetapi anda boleh memotong dan menampal kod JSON ke dalam alat berasaskan penyemak imbas ini untuk membantu anda memahami JSON dengan lebih baik atau melakukan analisis cepat dan kotor:

  • JSON Formatter: JSONLint akan memformat dan mengesahkan kod JSON sewenang-wenangnya.
  • JSON Viewer: Stack.hu mempunyai laman web yang akan membuat pokok interaktif untuk membantu anda memahami struktur kod JSON anda. 
  • JSON Beautifier: Sekiranya anda ingin "mencetak cantik" kod JSON anda, dengan pewarnaan sintaks dan seumpamanya, Prettydiff dapat membantu anda. 
  • JSON Converter: Perlu cepat memindahkan data dari format JSON ke sesuatu yang lain? Convertcsv.com mempunyai alat yang dapat menukar JSON ke CSV (yang kemudian dapat dibuka di Excel) atau XML.

Tutorial JSON

Bersedia untuk menyelami dan mengetahui lebih lanjut mengenai bagaimana bekerja dengan JSON dalam aplikasi interaktif anda? Rangkaian Pengembang Mozilla mempunyai tutorial hebat yang akan memulakan anda dengan JSON dan JavaScript. Sekiranya anda sudah bersedia untuk beralih ke bahasa lain, lihat tutorial menggunakan JSON dengan Java (dari Baeldung), dengan Python (dari DataCamp), atau dengan C # (dari Bantuan Pengujian Perisian). Semoga berjaya!

Josh Fruhlinger menyumbang kepada artikel ini.