Baris pada sumber berbeda dari baris pada nilai
Dalam string sumber JSON, garis miring terbalik diikuti n mengodekan baris baru. Dua garis miring mempertahankan satu garis miring dan n sebagai dua karakter pada nilai hasil parsing. Kedua contoh valid, tetapi panjang nilai text adalah 3 dan 4.
{"text":"A\nB"}
{"text":"A\\nB"}
JSON.parse('{"text":"A\\nB"}').text.length // 3
JSON.parse('{"text":"A\\\\nB"}').text.length // 4Baris baru nyata di dalam string adalah kesalahan
RFC 8259 mewajibkan escape untuk karakter kontrol U+0000 sampai U+001F dalam string, termasuk LF literal. LF, CR, tab dan spasi diizinkan di antara token. Dalam pengujian, LF literal di dalam string ditolak, tetapi objek beberapa baris diterima.
const invalid = '{"text":"A' + '\n' + 'B"}';
formatJSON(invalid); // throws
formatJSON('{\n"text":"AB"\n}'); // acceptedPisahkan pemformatan sumber dari penafsiran nilai
Moyoutil mempertahankan token string sumber dan mengubah indentasi di luarnya. Alat ini tidak menampilkan \n sebagai baris baru nyata pada nilai. Minifikasi juga mempertahankan escape string. Jika gagal, periksa tanda kutip dan garis miring dekat posisi yang ditunjukkan. Menambah garis miring ke seluruh input dapat mengubah nilai yang sudah benar.
Jalankan pemformatan dan validasi dengan contoh lalu bandingkan hasil minifikasi. Untuk nilai yang memerlukan baris baru, serialisasikan string dengan JSON.stringify saat membuat JSON, lalu periksa nilai JSON.parse. Lolos sintaks tidak memvalidasi kolom wajib dalam skema API.
Pertanyaan yang Sering Diajukan
Apakah minifikasi menghapus baris baru dalam nilai?
Tidak. Minifikasi mengurangi spasi di luar string. Alat ini mempertahankan escape dalam string, sehingga baris baru dalam nilai hasil parsing tetap ada.