Czym jest JSONL? Kompletny przewodnik po formacie JSON Lines

Wszystko, co musisz wiedzieć o JSON Lines — składnia, przykłady, zastosowania i najlepsze praktyki.

Ostatnia aktualizacja: luty 2026

Czym jest JSONL?

JSONL (JSON Lines), znany również jako Newline Delimited JSON (NDJSON), to tekstowy format danych, w którym każda linia jest prawidłową wartością JSON, oddzieloną znakami nowej linii. W przeciwieństwie do standardowego JSON, który otacza dane pojedynczą tablicą lub obiektem, JSONL przechowuje jeden rekord na linię.

Ta prosta konstrukcja sprawia, że JSONL jest idealny do strumieniowania, logowania i przetwarzania dużych zbiorów danych — każda linia może być odczytywana, parsowana i przetwarzana niezależnie bez ładowania całego pliku do pamięci.

Format ten został spopularyzowany przez narzędzia i platformy obsługujące ogromne wolumeny danych, w tym OpenAI (do zestawów danych do dostrajania), BigQuery, Apache Spark i systemy zarządzania logami.

Zasady składni JSONL

Format JSONL stosuje kilka prostych zasad:

  • Każda linia musi być prawidłową wartością JSON (obiekt, tablica, ciąg, liczba, wartość logiczna lub null)
  • Linie są oddzielone znakami nowej linii (\n)
  • Brak przecinków ani separatorów między liniami
  • Pliki muszą używać kodowania UTF-8
  • Końcowy znak nowej linii na końcu pliku jest opcjonalny
  • Puste linie są ignorowane przez większość parserów
Prawidłowy plik JSONL
{"name":"Alice","age":30,"city":"New York"}
{"name":"Bob","age":25,"city":"London"}
{"name":"Charlie","age":35,"city":"Tokyo"}

Uwaga: Każda linia jest kompletnym, samodzielnym obiektem JSON. Nie ma przecinków między liniami ani otaczającej tablicy.

Przykłady JSONL

Proste obiekty
{"id":1,"name":"Alice","email":"alice@example.com"}
{"id":2,"name":"Bob","email":"bob@example.com"}
{"id":3,"name":"Charlie","email":"charlie@example.com"}
Zagnieżdżone obiekty
{"user":{"name":"Alice","age":30},"scores":[95,87,92]}
{"user":{"name":"Bob","age":25},"scores":[88,91,76]}

Linie JSONL nie muszą być tego samego typu — każda linia musi być jedynie prawidłowym JSON:

Typy mieszane
{"event":"login","user":"alice","timestamp":"2026-01-15T10:30:00Z"}
{"event":"purchase","user":"alice","amount":29.99,"items":["book","pen"]}
{"event":"logout","user":"alice","timestamp":"2026-01-15T11:45:00Z"}

Jednym z najpopularniejszych zastosowań JSONL są zestawy danych do dostrajania OpenAI:

PopularFormat dostrajania OpenAI
{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is JSONL?"},{"role":"assistant","content":"JSONL is a text format where each line is a valid JSON value."}]}
{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"How do I read a JSONL file?"},{"role":"assistant","content":"Read the file line by line, parsing each line as JSON."}]}

Jak czytać pliki JSONL

Pliki JSONL można czytać dowolnym narzędziem obsługującym przetwarzanie tekstu linia po linii. Oto najczęściej stosowane metody:

Użyj standardowych narzędzi Unix do inspekcji plików JSONL:

Wiersz poleceń
# View first 5 lines
head -n 5 data.jsonl
# Count total lines (records)
wc -l data.jsonl
# Pretty-print each line with jq
cat data.jsonl | jq .
# Filter by field value
cat data.jsonl | jq 'select(.age > 30)'

Wbudowany moduł json w Pythonie naturalnie obsługuje JSONL:

Python
import json
with open('data.jsonl', 'r') as f:
for line in f:
record = json.loads(line)
print(record['name'])

Odczyt plików JSONL linia po linii w Node.js:

JavaScript / Node.js
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.jsonl')
});
for await (const line of rl) {
const record = JSON.parse(line);
console.log(record.name);
}

Przeglądarka JSONL online

Aby wizualnie przeglądać pliki, użyj jsonl.co do otwierania i przeglądania plików JSONL do 1GB — bez przesyłania, wszystko działa w Twojej przeglądarce.

Jak tworzyć pliki JSONL

Tworzenie plików JSONL jest proste — wystarczy zapisać jedną wartość JSON na linię.

Python
import json
records = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35},
]
with open('output.jsonl', 'w') as f:
for record in records:
f.write(json.dumps(record) + '\n')
JavaScript / Node.js
import { writeFileSync } from 'fs';
const records = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 },
{ name: 'Charlie', age: 35 },
];
const jsonl = records
.map(r => JSON.stringify(r))
.join('\n');
writeFileSync('output.jsonl', jsonl + '\n');

Czy można dodawać komentarze w JSONL?

Nie. Specyfikacja JSONL nie obsługuje komentarzy. Każda linia w pliku JSONL musi być prawidłową wartością JSON — a sam JSON nie ma składni komentarzy.

Jeśli potrzebujesz dołączyć metadane lub adnotacje do swoich danych, typowe obejścia obejmują:

  • 1Dodaj pole metadanych do obiektów JSON: '{'"_comment": "dane testowe", "name": "Alice"'}'
  • 2Użyj oddzielnego pliku metadanych obok pliku JSONL
  • 3Dodaj metadane jako pierwszą linię pliku: '{'"_meta": '{'"version": "1.0", "created": "2026-01-15"'}''}'

Pamiętaj, że wszelkie pola komentarzy będą parsowane jako zwykłe dane. Aplikacje konsumujące plik JSONL powinny być zaprojektowane tak, aby ignorować pola metadanych.

JSONL vs JSON

Kluczowa różnica polega na strukturze. JSON otacza wszystko pojedynczą wartością, podczas gdy JSONL przechowuje jedną wartość na linię.

JSONStandardowy JSON
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
JSONLJSONL (JSON Lines)
{"name":"Alice","age":30}
{"name":"Bob","age":25}
  • JSON musi być w całości załadowany do pamięci, aby go sparsować; JSONL może być odczytywany linia po linii
  • JSON potrzebuje przecinków między elementami; JSONL używa znaków nowej linii
  • JSON jest lepszy dla plików konfiguracyjnych i API; JSONL jest lepszy dla dużych zbiorów danych i strumieniowania
  • Dopisywanie do JSON wymaga przepisania całego pliku; JSONL po prostu dopisuje nową linię

Aby zobaczyć szczegółowe porównanie, odwiedź nasz kompletny JSON vs JSONL guide.

Typowe zastosowania

Uczenie maszynowe i AI

Najpopularniejszy

JSONL jest standardowym formatem dla danych treningowych ML. OpenAI, Hugging Face i inne platformy AI używają JSONL do zestawów danych do dostrajania, ponieważ każdy przykład treningowy jest samodzielną linią, którą można tasować, próbkować i strumieniować wydajnie.

Pliki logów i strumienie zdarzeń

JSONL

Systemy logowania strukturalnego (stos ELK, Datadog, CloudWatch) generują logi w formacie JSONL. Każdy wpis logu to jedna linia JSON, co ułatwia dopisywanie nowych wpisów i przetwarzanie logów w czasie rzeczywistym.

Przetwarzanie Big Data

JSONL

Narzędzia takie jak Apache Spark, BigQuery i AWS Athena natywnie obsługują JSONL. Format linia po linii umożliwia przetwarzanie równoległe w systemach rozproszonych — każdy worker może przetwarzać fragment linii niezależnie.

Strumieniowe API

JSONL

API zwracające duże zbiory wyników często używają strumieniowania JSONL. Klient może rozpocząć przetwarzanie wyników natychmiast po ich otrzymaniu, bez czekania na kompletną odpowiedź.

Rozszerzenia plików JSONL

Pliki JSONL zwykle używają tych rozszerzeń:

.jsonlStandardowe rozszerzenie JSONL, najszerzej stosowane
.ndjsonNewline Delimited JSON — technicznie ten sam format pod inną nazwą
.jsonNiektóre narzędzia generują JSONL z rozszerzeniem .json, co może powodować zamieszanie

Wszystkie trzy rozszerzenia zawierają ten sam format — jedna wartość JSON na linię. Typ MIME dla JSONL to application/jsonl lub application/x-ndjson.

Wypróbuj nasze darmowe narzędzia JSONL

Waliduj składnię JSONL, konwertuj między formatami i przeglądaj pliki — wszystko w przeglądarce.

Wypróbuj naszą przeglądarkę JSONL

Otwieraj, przeglądaj i edytuj pliki JSONL do 1GB — bezpośrednio w przeglądarce. Bez przesyłania, 100% prywatności.

Najczęściej zadawane pytania

Czym jest JSONL? Przewodnik po formacie JSON Lines, przyk...