Pengesah & pencantik JSON

5 daripada 2 penilaian

Pengesah & pencantik JSON ialah alat percuma yang menyemak sama ada sintaks JSON sah, kemudian memformat kandungan yang sah supaya strukturnya lebih mudah dibaca.

Apakah fungsi pengesahan dan pencantikan JSON?

Pengesahan JSON memastikan input mematuhi tatabahasa JSON, manakala pencantikan memaparkan objek dan tatasusunan yang sah dengan jarak serta inden yang konsisten. Fungsi ini berguna untuk menyahpepijat respons API, menyemak konfigurasi sebelum pelaksanaan atau membaca data padat yang dibekalkan oleh pihak ketiga.

Sintaks JSON lebih ketat daripada literal objek JavaScript. Nama sifat mesti menggunakan tanda petik berganda, rentetan tidak boleh menggunakan tanda petik tunggal dan objek atau tatasusunan tidak boleh mempunyai koma di hujung. Komen, undefined, NaN dan Infinity juga tidak termasuk dalam spesifikasi JSON.

Alat ini menggunakan fungsi json_decode PHP pada pelayan. Input anda dihantar ke pelayan melalui HTTPS dan tidak disimpan. Oleh sebab input tetap meninggalkan peranti anda, padamkan kata laluan, token akses dan data peribadi jika peraturan pengendalian organisasi anda tidak membenarkannya dihantar ke pelayan luaran.

Bagaimanakah cara mengesahkan dan mencantikkan JSON?

Tampalkan kandungan ke dalam medan JSON, kemudian jalankan alat. Untuk mendapatkan hasil yang berguna, masukkan satu nilai JSON yang lengkap, bukannya sebahagian objek yang disalin daripada satu baris log.

  1. Salin respons mentah, blok konfigurasi atau nilai JSON lain tanpa label konsol di sekelilingnya.
  2. Tampalkannya ke dalam medan JSON dengan mengekalkan tanda petik dan aksara lepas.
  3. Jalankan pengesahan, kemudian periksa hasil yang telah diformat atau ralat yang dilaporkan.
  4. Jika pengesahan gagal, betulkan masalah sintaks pertama yang kelihatan dan jalankan sekali lagi. Satu tanda petik yang hilang boleh menyebabkan beberapa aksara selepasnya ditafsirkan dengan salah.

Empat aksara ruang putih yang dibenarkan antara token JSON ialah ruang (U+0020), tab (U+0009), suapan baris (U+000A) dan kembali ke awal baris (U+000D). Aksara ini tidak mempengaruhi data, jadi anda boleh menambah atau membuangnya tanpa mengubah data. Ruang putih dalam rentetan bertanda petik ialah sebahagian daripada data dan mesti dikekalkan. Tanda baca dalam rentetan juga dikekalkan, tetapi tanda petik, garis miring ke belakang dan aksara kawalan memerlukan jujukan lepas yang sesuai.

Bagaimanakah cara membaca hasil pengesahan?

Hasil yang berjaya bermakna PHP dapat menyahkod input sebagai JSON. Jika gagal, penghurai tidak dapat mentafsirkannya sebagai satu nilai JSON lengkap yang sah. Proses pencantikan kemudian memperlihatkan sarangan dan sempadan objek serta tatasusunan yang sah.

Antara punca kegagalan yang lazim ialah:

  • koma di hujung sebelum } atau ];
  • nama sifat tanpa tanda petik seperti {name: "Ada"};
  • rentetan bertanda petik tunggal;
  • koma yang hilang antara sifat atau unsur tatasusunan;
  • tanda petik berganda atau garis miring ke belakang tanpa aksara lepas dalam rentetan;
  • objek, tatasusunan atau rentetan yang tidak lengkap;
  • input UTF-8 yang tidak sah atau aksara kawalan mentah dalam rentetan;
  • bahagian integer dengan sifar pendahuluan yang tidak diperlukan, seperti 01 atau -01, atau nilai bukan JSON seperti NaN.

Medan kosong bukan JSON yang sah. Sebaliknya, nilai tunggal seperti 42, true, null atau "hello" ialah JSON yang sah walaupun bukan objek atau tatasusunan. Kandungan dengan sarangan yang terlalu dalam juga mungkin melebihi had sarangan penyahkod.

Pengesahan sintaks tidak memastikan data mematuhi kontrak API. Sesuatu dokumen boleh menjadi JSON yang sah tetapi mengandungi rentetan apabila aplikasi menjangkakan nombor, tidak menyertakan sifat wajib atau menggunakan format tarikh yang tidak diterima. Gunakan JSON Schema atau semakan pada peringkat aplikasi untuk keperluan tersebut.

Contoh penggunaan JSON

Input padat yang sah:

{"name":"Ada","active":true,"roles":["admin","editor"]}

Hasil yang dicantikkan memaparkan sifat dan unsur tatasusunan pada aras berasingan dengan inden. Nilainya masing-masing kekal sebagai rentetan, Boolean dan tatasusunan. Pemformatan hanya mengubah persembahan, bukan jenis data asas.

Input tidak sah dengan koma di hujung:

{"name":"Ada","active":true,}

Input ini gagal kerana JSON tidak membenarkan koma selepas sifat terakhir. Buang koma tersebut untuk menjadikan objek itu sah.

Teks beraksen dan teks bukan Latin boleh digunakan terus dalam rentetan JSON jika input menggunakan UTF-8 yang sah. Contohnya, {"city":"Zürich","greeting":"こんにちは"} adalah sah. Notasi lepas JSON seperti \u00fc juga merupakan perwakilan sah bagi aksara Unicode tertentu, tetapi pasangan pengganti diperlukan untuk aksara di luar Basic Multilingual Plane.

Bilakah JSON tidak perlu dicantikkan?

Pencantikan tidak diperlukan jika JSON hanya akan dibaca oleh mesin dan tiada pemeriksaan manusia atau semakan kawalan versi dirancang. Inden dan pemisah baris tambahan dalam JSON meningkatkan jumlah bait yang dipindahkan, jadi respons pengeluaran biasanya dihantar dalam bentuk padat.

Memampatkan JSON yang sudah padat juga tidak banyak memberikan manfaat. Pemampatan berulang tidak dapat memendekkan nama sifat tetap atau nilai rentetan, manakala mengubah nilai tersebut akan mengubah data. Untuk JavaScript yang akan digunakan dalam pelaksanaan, bukannya data JSON, Pemampat JS ialah pilihan yang lebih sesuai.

Pencantikan paling berguna ketika memeriksa struktur atau nilai JSON semasa penyahpepijatan, semakan kod dan pemeriksaan sebelum pelaksanaan. Ia mendedahkan sarangan yang tidak sepadan, memudahkan tatasusunan besar diimbas dan menghasilkan perbezaan yang lebih kemas apabila konfigurasi dikomit ke Git. Ia tidak membaiki JSON yang rosak secara automatik atau menentukan maksud sebenar serpihan yang kabur.

Soalan lazim

Bolehkah JSON mengandungi komen?

Tidak. JSON standard tidak mempunyai sintaks komen, jadi // comment dan /* comment */ akan menyebabkan pengesahan gagal. Jika fail konfigurasi memerlukan komen, gunakan format yang menyokongnya atau buang komen sebelum menghantar kandungan kepada penghurai JSON yang ketat.

Adakah nama sifat pendua akan ditolak?

Tidak semestinya. Spesifikasi JSON menyatakan bahawa nama ahli dalam objek sepatutnya unik, tetapi penghurai tidak sentiasa menganggap nama pendua sebagai ralat sintaks. Penyahkodan PHP biasanya mengekalkan nilai yang muncul kemudian, jadi kesan nama pendua sebelum pengesahan jika setiap kejadian perlu dikekalkan.

Bolehkah saya mengesahkan fail JSON Lines?

Tidak sebagai satu dokumen JSON. JSON Lines, yang turut dipanggil NDJSON, mengandungi nilai JSON berasingan pada setiap baris, manakala penghurai JSON biasa menjangkakan satu nilai peringkat teratas. Sahkan setiap baris secara berasingan atau tukarkan rekod kepada satu tatasusunan JSON.

Adakah susunan sifat objek penting?

Aplikasi tidak sepatutnya bergantung pada susunan sifat objek JSON. Tatasusunan mempunyai susunan, tetapi objek mewakili koleksi ahli bernama dan penghurai atau pensiri lain mungkin mengeluarkan ahli tersebut dalam susunan berbeza. Jika urutan membawa makna, letakkan nilai dalam tatasusunan.

Mengapakah fail JSON boleh gagal walaupun kelihatan betul?

Tanda tertib bait yang tidak kelihatan, UTF-8 yang rosak atau aksara kawalan tanpa aksara lepas boleh menyebabkan teks yang kelihatan betul gagal. Penyalinan daripada terminal juga boleh memasukkan awalan seperti label status atau cap masa. Periksa bait mentah atau buka fail dalam penyunting yang boleh memaparkan pengekodan dan aksara kawalan.

Semakan akhir

Sebelum melaksanakan JSON yang telah dibetulkan, bandingkan jenis data serta nilai yang kelihatan, pastikan jujukan lepas tidak berubah dan jalankan aplikasi yang menggunakan data tersebut atau pengesahan skemanya. Simpan satu salinan respons asal tanpa perubahan ketika mendiagnosis data pihak ketiga supaya pemformatan tidak mengaburkan punca ralat.

Alat popular