JSON vs JSONL: Jaka jest różnica?

Kompletny przewodnik po formatach JSON i JSONL (JSON Lines), ich różnicach i zastosowaniach.

Ostatnia aktualizacja: luty 2026

Szybkie porównanie

CechaJSONJSONL (JSON Lines)
StrukturaPojedynczy obiekt lub tablicaJeden obiekt JSON na linię
Rozszerzenie pliku.json.jsonl lub .ndjson
ParsowanieWymaga sparsowania całego plikuMoże parsować linia po linii
StrumieniowanieTrudneNatywna obsługa
Obsługa dużych plikówIntensywne użycie pamięciWydajne użycie pamięci
Czytelność dla ludziSformatowany z wcięciamiKompaktowy, jeden rekord na linię
Walidacja schematuObsługa JSON SchemaJSON Schema dla każdej linii
Dopisywanie danychWymaga przepisania całego plikuWystarczy dodać nową linię

Czym jest JSON?

JSON (JavaScript Object Notation) to lekki format wymiany danych, łatwy do odczytania i zapisu przez ludzi oraz łatwy do parsowania i generowania przez maszyny. Oparty jest na podzbiorze JavaScript i stał się de facto standardem wymiany danych w sieci.

Plik JSON zawiera pojedynczą wartość JSON — zwykle obiekt lub tablicę. Cały plik musi być sparsowany jako jedna jednostka, aby uzyskać dostęp do jakichkolwiek danych w nim zawartych.

Przykład JSON
[
{"name": "Alice", "age": 30, "city": "New York"},
{"name": "Bob", "age": 25, "city": "London"},
{"name": "Charlie", "age": 35, "city": "Tokyo"}
]

Czym jest JSONL (JSON Lines)?

JSONL (JSON Lines), znany również jako Newline Delimited JSON (NDJSON), to format tekstowy, w którym każda linia jest prawidłowym obiektem JSON. Linie są oddzielone znakami nowej linii (\n). W przeciwieństwie do standardowego JSON, dane nie są otoczone tablicą ani obiektem.

Każda linia w pliku JSONL jest samodzielna i może być parsowana niezależnie. Dzięki temu JSONL jest idealny do strumieniowania danych, plików logów i przetwarzania dużych zbiorów danych bez ładowania wszystkiego do pamięci.

Przykład JSONL
{"name": "Alice", "age": 30, "city": "New York"}
{"name": "Bob", "age": 25, "city": "London"}
{"name": "Charlie", "age": 35, "city": "Tokyo"}

Kluczowe różnice między JSON a JSONL

1. Format pliku i struktura

JSON

JSON otacza wszystkie dane pojedynczym obiektem lub tablicą. Plik musi być syntaktycznie poprawny jako całość — brakujący nawias na końcu unieważnia cały plik.

JSONL

JSONL przechowuje jeden obiekt JSON na linię. Każda linia jest niezależna — jeśli jedna linia zawiera błąd, pozostałe linie nadal mogą być sparsowane.

2. Parsowanie i użycie pamięci

JSON

JSON wymaga załadowania i sparsowania całego pliku naraz. Plik JSON o rozmiarze 1GB wymagałby około 1GB+ pamięci do sparsowania.

JSONL

JSONL może być odczytywany i parsowany linia po linii (strumieniowanie). Nawet plik JSONL o rozmiarze 10GB może być przetwarzany przy minimalnym zużyciu pamięci, czytając jedną linię na raz.

3. Strumieniowanie i dane w czasie rzeczywistym

JSON

JSON nie jest zaprojektowany do strumieniowania. Nie możesz rozpocząć przetwarzania danych, dopóki cały plik lub odpowiedź nie zostaną odebrane i sparsowane.

JSONL

JSONL jest idealny do strumieniowania. Każda linia może być przetwarzana natychmiast po odebraniu, co czyni go doskonałym do kanałów danych w czasie rzeczywistym, logów i zdarzeń wysyłanych przez serwer.

4. Dopisywanie i zapisywanie danych

JSON

Dopisywanie danych do tablicy JSON wymaga odczytania całego pliku, sparsowania go, dodania nowego elementu i przepisania kompletnego pliku.

JSONL

Dopisywanie do pliku JSONL jest tak proste, jak dodanie nowej linii na końcu. Nie trzeba odczytywać ani modyfikować istniejących danych. To O(1) vs O(n) dla JSON.

5. Czytelność dla ludzi

JSON

JSON obsługuje czytelne formatowanie z wcięciami, co czyni go bardzo czytelnym dla plików konfiguracyjnych i odpowiedzi API.

JSONL

JSONL jest z założenia kompaktowy — jeden rekord na linię. Jest zoptymalizowany pod kątem przetwarzania maszynowego, choć poszczególne linie mogą być czytelnie sformatowane.

Kiedy używać JSON vs JSONL

JSONUżywaj JSON, gdy:
  • Pracujesz z plikami konfiguracyjnymi
  • Budujesz ciała żądań/odpowiedzi REST API
  • Przechowujesz małe, strukturalne dane (poniżej 10MB)
  • Dane muszą być czytelne i edytowalne przez ludzi
  • Pracujesz z zagnieżdżonymi, hierarchicznymi strukturami danych
  • Wymiana danych po stronie przeglądarki
JSONLUżywaj JSONL, gdy:
  • Przetwarzasz duże zbiory danych (100MB+)
  • Strumieniujesz dane w czasie rzeczywistym
  • Zapisujesz pliki logów i dane zdarzeń
  • Trenujesz modele uczenia maszynowego (OpenAI, Hugging Face)
  • Potoki ETL i przetwarzanie danych
  • Często dopisujesz dane
  • Przetwarzasz dane narzędziami Unix (grep, awk, sed)

Typowe zastosowania

Uczenie maszynowe i AI

JSONL

JSONL jest standardowym formatem dla danych treningowych ML. OpenAI używa JSONL do zestawów danych do dostrajania, a wiele frameworków ML oczekuje wejścia JSONL. Każda linia reprezentuje jeden przykład treningowy.

Logowanie aplikacji

JSONL

Logi serwera, zdarzenia aplikacji i ścieżki audytu naturalnie pasują do JSONL. Każde zdarzenie jest zapisywane jako pojedyncza linia, co ułatwia dopisywanie, wyszukiwanie za pomocą grep i przetwarzanie narzędziami strumieniowymi.

Web API i konfiguracja

JSON

REST API zazwyczaj używają JSON dla ciał żądań i odpowiedzi. Pliki konfiguracyjne (.json) używają JSON dla czytelnych, strukturalnych ustawień z zagnieżdżonymi obiektami.

Big Data i analityka

JSONL

Potoki danych, procesy ETL i narzędzia analityczne używają JSONL do przetwarzania dużych wolumenów danych. Każdy rekord może być przetwarzany niezależnie, umożliwiając przetwarzanie równoległe i wzorce MapReduce.

Przykłady kodu

Odczyt JSON w JavaScript
// Reading JSON - must load entire file
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
// Access data
data.forEach(item => {
console.log(item.name);
});
Odczyt JSONL w JavaScript
// Reading JSONL - stream line by line
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.jsonl')
});
for await (const line of rl) {
const item = JSON.parse(line);
console.log(item.name);
}
Konwersja JSON do JSONL
// JSON array to JSONL
const jsonArray = JSON.parse(fs.readFileSync('data.json', 'utf8'));
const jsonl = jsonArray
.map(item => JSON.stringify(item))
.join('\n');
fs.writeFileSync('data.jsonl', jsonl);
Konwersja JSONL do JSON
// JSONL to JSON array
const lines = fs.readFileSync('data.jsonl', 'utf8')
.split('\n')
.filter(line => line.trim());
const jsonArray = lines.map(line => JSON.parse(line));
fs.writeFileSync('data.json', JSON.stringify(jsonArray, null, 2));

Konwertuj JSON i JSONL online

Użyj naszych darmowych narzędzi online do natychmiastowej konwersji między formatami JSON i JSONL — bez instalacji.

Wypróbuj naszą przeglądarkę JSONL

Przeglądaj i edytuj pliki JSONL do 1GB natychmiast w przeglądarce. Bez przesyłania, bez rejestracji.

Najczęściej zadawane pytania

JSON vs JSONL: Jaka jest różnica? Kompletny przewodnik