JSON Toolkit

JSON vs JSON5 vs JSONC

Podsumowanie: Ścisłe nadzbiory w kolejności: JSONC dodaje komentarze; JSON5 dodaje pojedyncze cudzysłowy, klucze bez cudzysłowów, przecinki końcowe i liczby szesnastkowe. Zły wybór psuje API, a nie edytor.

Początkujący~4 min czytaniaOpublikowano 2026-10-30Zaktualizowano 2026-10-30
Porównanie funkcji JSON, JSON5 i JSONC

Najważniejsze: używaj standardowego JSON, gdy dane przekraczają granicę systemu, a JSONC tylko do lokalnej konfiguracji edytowanej przez ludzi; po JSON5 sięgaj, gdy potrzebujesz pojedynczych cudzysłowów, przecinków końcowych lub kluczy bez cudzysłowów, ale najpierw potwierdź, że loader go wspiera.

W jednej linii: JSONC to JSON plus komentarze; JSON5 to JSON plus nawyki JavaScript.

Macierz funkcji

Funkcja JSON JSONC JSON5
Łańcuchy w podwójnych cudzysłowach ✅ ✅ ✅
Łańcuchy w pojedynczych cudzysłowach ❌ ❌ ✅
Klucze bez cudzysłowów ❌ ❌ ✅
Komentarze liniowe // ❌ ✅ ✅
Komentarze blokowe /* */ ❌ ✅ ✅
Przecinki końcowe ❌ ❌ ✅
Liczby szesnastkowe 0xFF ❌ ❌ ✅
Infinity / NaN ❌ ❌ ✅
Łańcuchy wieloliniowe ❌ ❌ ✅
Czytelne przez standardowe parsery ✅ ❌ ❌

Zauważ, że JSONC rozwiązuje tylko komentarze. Wiele osób zakłada, że „JSON z komentarzami” pozwala też na przecinki końcowe; tsconfig.json nadal zawodzi na jednym.

Do czego służy każdy

JSON — wymiana. API, kolejki, kolumny JSON w bazach, logi. Cokolwiek maszyna-do-maszyny.

JSONC — konfiguracja edytora. VS Code sam parsuje te pliki, więc JSON.parse nigdy ich nie widzi. Nie ma RFC; to de facto konwencja kierowana przez Microsoft.

JSON5 — łagodny nadzbiór dla ludzi. Celem było „konfiguracja wyglądająca jak literał obiektowy JavaScript”. Najlepiej pasuje do plików .json5 ładowanych przez narzędzia budowania; najszersza składnia i najwęższe wsparcie narzędzi.

Wybór

Sytuacja Wybór
Treści żądań lub odpowiedzi JSON, bez alternatywy
Kolumny JSON w MySQL / PostgreSQL JSON, ich funkcje nie akceptują nic innego
Konfiguracja projektu wymagająca wyjaśnienia JSONC, jeśli wspierany, inaczej YAML
Chcesz luźności w stylu JS JSON5, po potwierdzeniu, że loader go wspiera
Będą to edytować osoby nie-techniczne YAML, wcięcia biją nawiasy

Jedna łatwa pułapka

Parsowanie pliku JSONC jako ścisłego JSON-a produkuje błąd wskazujący komentarz:

SyntaxError: Unexpected token / in JSON at position 42

Zanim usuniesz komentarz, sprawdź, czy plik ma być JSONC. Usuń go, a możesz nadal trafić przecinek końcowy dwie linie później.

FAQ

Jak wybrać między JSONC a JSON5?

Użyj JSONC, gdy komentarze są jedynym, czego potrzebujesz: dodaje // i /* */ na wierzchu JSON-a, a settings.json i tsconfig.json w VS Code go używają. Użyj JSON5, gdy chcesz też pojedynczych cudzysłowów, kluczy bez cudzysłowów, przecinków końcowych, liczb szesnastkowych lub łańcuchów wieloliniowych. Oba zależą od loadera, więc potwierdź, że narzędzie czytające plik je wspiera.

Dlaczego pliku JSONC nie można czytać jako standardowego JSON?

JSONC to de facto konwencja, a nie osobne RFC, więc standardowe parsery odrzucają komentarze. JSON.parse na takim pliku rzuca Unexpected token /, wskazując komentarz, a nie dane. Tylko konfiguracja czytana przez edytor lub dedykowany parser powinna być pisana jako JSONC.

Czy wysyłać plik JSON5 do API?

Nie. API, kolumny JSON w bazach i kolejki parsują ścisły JSON, więc pojedyncze cudzysłowy, klucze bez cudzysłowów i przecinki końcowe JSON5 są odrzucane. JSON5 jest do lokalnej konfiguracji edytowanej przez ludzi; przekonwertuj go do standardowego JSON, zanim przekroczy granicę systemu.

Dodatkowe materiały