00

Jawaban singkatnya

  • JSON Lines adalah format teks yang menyimpan data terstruktur dengan satu nilai JSON per baris dan mewajibkan UTF-8 tanpa BOM serta tanpa baris kosong.
  • Di Windows atau macOS, buka berkas dengan editor teks yang mendukung UTF-8. Di ponsel, pilih editor yang dapat mengakses berkas dan membaca UTF-8; batas ukuran bergantung pada aplikasi. Untuk mengolah data, gunakan parser JSON pada setiap baris secara terpisah. Struktur baris juga cocok untuk alat teks Unix dan pipeline shell. LF dan CRLF didukung. JSON Lines menyarankan baris baru di akhir, sedangkan NDJSON mewajibkannya setelah setiap teks JSON.
  • Risiko bawaan format ini rendah: sintaks JSON yang sesuai tidak memuat penugasan atau pemanggilan fungsi. Gunakan parser JSON untuk teks yang tidak tepercaya; eval atau fungsi serupa dapat menimbulkan risiko eksekusi kode. Keberhasilan parsing tidak membuktikan bahwa isi berkas dapat dipercaya atau bahwa konversi mempertahankan semua nilai.
01

JSON Lines (.jsonl, .ndjson): cara membuka dan mengonversi

JSON Lines, juga disebut JSON yang dipisahkan baris baru, cocok untuk memproses rekaman, log, dan pesan satu per satu. Setiap baris dapat berisi objek, array, atau nilai skalar; null juga sah. JSON Lines memakai .jsonl, sedangkan spesifikasi NDJSON merekomendasikan .ndjson. Dokumentasi JSON Lines mengusulkan application/jsonl tetapi menyatakan bahwa jenis media itu belum distandardisasi; NDJSON merekomendasikan application/x-ndjson.

Simpan file aslinya

Untuk menghasilkan satu dokumen JSON biasa, gabungkan nilai dari setiap baris JSONL ke dalam satu array sesuai urutan aslinya. Cara ini mengikuti struktur kedua format; mengganti ekstensi saja tidak melakukan konversi. Periksa kunci objek duplikat dan presisi angka sebelum parsing dan ekspor. Konversi ke CSV juga memerlukan aturan pemetaan array, nilai bersarang, dan rekaman dengan kolom berbeda.

02

Cara membukanya

Di Windows atau macOS, buka berkas dengan editor teks yang mendukung UTF-8. Di ponsel, pilih editor yang dapat mengakses berkas dan membaca UTF-8; batas ukuran bergantung pada aplikasi. Untuk mengolah data, gunakan parser JSON pada setiap baris secara terpisah. Struktur baris juga cocok untuk alat teks Unix dan pipeline shell. LF dan CRLF didukung. JSON Lines menyarankan baris baru di akhir, sedangkan NDJSON mewajibkannya setelah setiap teks JSON.

Cuma ingin melihat isinya

Di Windows atau macOS, buka berkas dengan editor teks yang mendukung UTF-8. Di ponsel, pilih editor yang dapat mengakses berkas dan membaca UTF-8; batas ukuran bergantung pada aplikasi. Untuk mengolah data, gunakan parser JSON pada setiap baris secara terpisah. Struktur baris juga cocok untuk alat teks Unix dan pipeline shell. LF dan CRLF didukung. JSON Lines menyarankan baris baru di akhir, sedangkan NDJSON mewajibkannya setelah setiap teks JSON.

Perlu mengirimkannya

Untuk menghasilkan satu dokumen JSON biasa, gabungkan nilai dari setiap baris JSONL ke dalam satu array sesuai urutan aslinya. Cara ini mengikuti struktur kedua format; mengganti ekstensi saja tidak melakukan konversi. Periksa kunci objek duplikat dan presisi angka sebelum parsing dan ekspor. Konversi ke CSV juga memerlukan aturan pemetaan array, nilai bersarang, dan rekaman dengan kolom berbeda.

03

Keamanan file

Risiko bawaan format ini rendah: sintaks JSON yang sesuai tidak memuat penugasan atau pemanggilan fungsi. Gunakan parser JSON untuk teks yang tidak tepercaya; eval atau fungsi serupa dapat menimbulkan risiko eksekusi kode. Keberhasilan parsing tidak membuktikan bahwa isi berkas dapat dipercaya atau bahwa konversi mempertahankan semua nilai.

Berhenti kalau menemukan hal ini

Pengirim tidak dikenal, nama yang berakhir dengan dua ekstensi, atau isi yang tidak cocok dengan ekstensinya — periksa dulu sebelum dibuka.

04

Soal konversi

Untuk menghasilkan satu dokumen JSON biasa, gabungkan nilai dari setiap baris JSONL ke dalam satu array sesuai urutan aslinya. Cara ini mengikuti struktur kedua format; mengganti ekstensi saja tidak melakukan konversi. Periksa kunci objek duplikat dan presisi angka sebelum parsing dan ekspor. Konversi ke CSV juga memerlukan aturan pemetaan array, nilai bersarang, dan rekaman dengan kolom berbeda.

Sebelum mengonversi

Konversikan salinannya, jangan file aslinya, lalu bandingkan kualitas, metadata, dan tata letaknya dengan file awal.

05

Pertanyaan umum

Apa itu berkas JSON Lines dan apa kegunaannya?

JSON Lines adalah berkas teks berisi satu nilai JSON per baris untuk memproses rekaman, log, dan pesan secara individual. Setiap baris dapat memuat objek, array, atau nilai skalar, termasuk null. Baris kosong bukan rekaman JSON Lines yang sah.

Bagaimana cara membuka berkas JSONL di Windows?

Buka berkas .jsonl melalui editor teks yang mendukung UTF-8. Setiap baris merupakan nilai JSON tersendiri. Untuk mengolah rekaman, gunakan parser yang membaca JSON per baris; parser yang mengharapkan satu dokumen JSON dapat menolak beberapa rekaman.

Bagaimana cara membuka berkas JSONL di Mac?

Gunakan editor dalam mode teks biasa dengan pengodean UTF-8. Setiap rekaman harus berada pada satu baris. Di terminal, struktur ini dapat ditangani dengan alat teks Unix dan pipeline shell, lalu setiap baris diparsing sebagai JSON secara terpisah.

Bagaimana cara membuka berkas NDJSON di ponsel?

Pilih editor teks yang dapat mengakses berkas di ponsel dan membaca UTF-8, lalu buka .ndjson dari aplikasi tersebut. Akses berkas dan ukuran yang didukung bergantung pada aplikasi; format ini tidak menjamin dukungan semua editor ponsel.

Mengapa terjadi kesalahan parsing NDJSON akibat baris kosong?

JSON Lines tidak mengizinkan baris kosong. Parser NDJSON boleh mengabaikannya jika perilaku itu didokumentasikan dan sebaiknya menyediakan pengaturan untuknya, sehingga hasil antaralat dapat berbeda. Periksa juga JSON yang belum lengkap atau satu rekaman yang terpecah menjadi beberapa baris.

Sebaiknya memilih JSON Lines atau JSON biasa untuk banyak rekaman?

Pilih JSON Lines jika rekaman perlu dibaca atau diolah satu per satu berdasarkan baris. Pilih array JSON biasa jika penerima mengharapkan satu dokumen JSON. Beberapa nilai yang dipisahkan baris baru tidak membentuk satu dokumen JSON yang sah.

Bagaimana cara mengonversi JSONL menjadi array JSON?

Parsing setiap baris sebagai nilai JSON, pertahankan urutannya, lalu tulis semua nilai dalam satu array dengan pemisah koma. Cara ini mengikuti struktur format. Mengganti ekstensi .jsonl menjadi .json saja tidak mengubah rekaman menjadi array JSON.

Kehilangan data apa yang perlu diperiksa saat mengonversi JSONL ke CSV?

Tentukan cara memetakan objek bersarang, array, dan rekaman dengan bidang berbeda ke kolom CSV. Periksa juga kunci duplikat serta angka besar atau berpresisi tinggi: parser mungkin hanya menyimpan nilai duplikat terakhir atau mengubah angka yang melampaui presisinya.

Apa risiko keamanan saat parsing berkas JSONL dari sumber tidak dikenal?

Sintaks JSON yang sesuai tidak memuat penugasan atau pemanggilan fungsi. Namun, eval dan fungsi serupa dapat menimbulkan eksekusi kode saat digunakan pada teks tidak tepercaya. Gunakan parser JSON. Parsing yang berhasil tidak membuktikan bahwa isinya dapat dipercaya.

Bagaimana cara memperbaiki kesalahan pengodean UTF-8 pada JSON Lines?

Pastikan pengodean aslinya, lalu simpan salinan yang telah didekode dengan benar sebagai UTF-8 tanpa BOM. JSON Lines mewajibkan pengodean ini. Jika pembacaan sebelumnya sudah mengganti karakter, mengubah label pengodean saja tidak mengembalikan teks aslinya.

Apa batas ukuran dan kedalaman struktur bersarang pada berkas JSONL?

Spesifikasi yang dirujuk tidak menetapkan batas pembukaan universal. Parser dapat membatasi ukuran teks, kedalaman struktur, dan panjang string. Surrogate Unicode yang tidak berpasangan juga dapat menyebabkan perilaku tidak terduga atau kesalahan saat dijalankan. Periksa batas alat pembaca yang digunakan.

06

Format terkait

Sumber

JSON Lines — 官方格式文档 · JSON Lines 格式项目,维护者 Ian Ward

NDJSON — Newline delimited JSON Specification · NDJSON 官方规范仓库

RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format · IETF Standards Track / RFC Editor