JSON to tekstowy format zapisu danych, w którym API, automatyzacje i modele AI przekazują sobie informacje jako pary “nazwa: wartość” w nawiasach klamrowych albo listy w nawiasach kwadratowych. Plik z rozszerzeniem .json otworzysz każdym edytorem tekstu, przeglądarką Firefox albo w Excelu przez Pobierz dane. Nie trzeba do niego specjalnego programu, bo to zwykły tekst w kodowaniu UTF-8. Problem zaczyna się zwykle dopiero wtedy, gdy plik ma błąd składni, na przykład przecinek za ostatnim elementem. Stan na 31 października 2026 roku.
JSON co to jest w skrócie
JSON (JavaScript Object Notation) to według polskiej strony json.org “prosty format wymiany danych”, łatwy do czytania dla ludzi i do generowania dla komputerów. Nazwa pochodzi od JavaScriptu, ale format jest niezależny od języków programowania. Obsługuje go Python, Java, C#, PHP i praktycznie każdy współczesny język.
Cały format opiera się na dwóch strukturach:
- obiekt, czyli zbiór par nazwa i wartość w nawiasach klamrowych
{ }, - tablica, czyli uporządkowana lista wartości w nawiasach kwadratowych
[ ].
JSON nie jest językiem programowania. Nie ma w nim instrukcji, pętli ani funkcji, tylko dane. Najbliżej mu do bardzo ścisłego formularza: między elementami możesz dowolnie dodawać odstępy i nowe wiersze, ale nawiasy, cudzysłowy, dwukropki i przecinki muszą stać na właściwych miejscach.
Obowiązujące specyfikacje to RFC 8259 z grudnia 2017 roku i standard ECMA-404. RFC wymaga, żeby JSON wymieniany między systemami był zapisany w UTF-8. Podaje też oficjalny typ danych application/json i rozszerzenie pliku .json.
Jak wygląda plik JSON: przykład z typami danych
Plik JSON wygląda jak lista etykiet z wartościami, ułożona w nawiasy. Oto zmyślona, ale poprawna odpowiedź serwisu pogodowego:
{
"miasto": "Kraków",
"temperatura": 7.5,
"alert": false,
"opady": null,
"prognoza": [
{"dzien": "2026-11-02", "min": 2, "max": 9},
{"dzien": "2026-11-03", "min": 1, "max": 6}
]
}
W tych dziesięciu wierszach jest każdy typ, jaki zna JSON:
| Typ | Przykład z pliku | Zasada |
|---|---|---|
| tekst (string) | "Kraków" | zawsze w podwójnym cudzysłowie |
| liczba | 7.5, 2 | kropka dziesiętna, bez cudzysłowu |
| wartość logiczna | false | tylko true albo false, małymi literami |
| brak wartości | null | małymi literami |
| tablica | "prognoza": [ ... ] | elementy oddzielone przecinkami |
| obiekt | {"dzien": ..., "min": 2} | pary nazwa i wartość, nazwy w cudzysłowie |
Struktury można zagnieżdżać: tablica prognoza zawiera dwa obiekty, a każdy z nich ma własne pola. Odstępy i nowe wiersze nie mają znaczenia, więc ten sam plik może zajmować jeden długi wiersz. Programy często tak go zapisują, a człowiek widzi wtedy nieczytelną ścianę znaków.

Jak otworzyć plik JSON
Plik JSON otworzysz każdym programem, który czyta zwykły tekst. Wybór zależy od tego, czy chcesz plik tylko przeczytać, poprawić, czy zamienić na tabelę.
Na komputerze z Windows
- Kliknij plik prawym przyciskiem myszy i wybierz Otwórz za pomocą.
- Wskaż Notatnik, jeśli chcesz tylko zajrzeć do środka.
- Do poprawiania wybierz edytor kodu, na przykład Visual Studio Code. Dokumentacja VS Code podaje, że błędy oznacza czerwonym podkreśleniem, a nieczytelny jednowierszowy plik formatuje skrót Shift+Alt+F albo polecenie Format Document z menu kontekstowego.
Na Macu zwykły tekst otworzy TextEdit, a do pracy z plikiem lepiej nadaje się ten sam edytor kodu.
W przeglądarce
Firefox ma wbudowaną przeglądarkę JSON. Według dokumentacji Mozilli po otwarciu pliku pokazuje dane z podświetloną składnią i zwijanymi gałęziami. Ma też widok surowego tekstu, czytelnie sformatowaną wersję i pole do filtrowania. Działa to zarówno dla pliku z dysku, jak i dla adresu, który zwraca JSON. Gdy dokument pochodzi z zapytania sieciowego, Firefox pokazuje też nagłówki żądania i odpowiedzi.
W Excelu
Excel nie otwiera JSON-a dwuklikiem jak arkusza, ale importuje go do tabeli. Pomoc Microsoftu podaje ścieżkę dla Windows: Dane > Pobierz dane > Z pliku > JSON, potem wskazujesz plik i wybierasz Otwórz. Excel uruchamia edytor Power Query, który według dokumentacji sam spłaszcza zagnieżdżone dane do tabeli. Ta ścieżka dotyczy Excela dla Windows; Excel na Macu ma w pomocy Microsoftu osobny opis z innym układem menu.
Na telefonie
Telefon traktuje plik JSON jak zwykły tekst. Jeśli system pyta, czym go otworzyć, wybierz aplikację, która wyświetla pliki tekstowe, albo edytor kodu ze sklepu z aplikacjami. Do poprawiania dużych plików telefon się nie nadaje, bo łatwo zgubić cudzysłów.
Jak sprawdzić, czy JSON jest poprawny
Najszybciej sprawdzisz plik poleceniem Pythona, które jednocześnie waliduje i ładnie formatuje JSON. Od wersji 3.14 wystarczy wpisać w terminalu:
python -m json plik.json
W starszych wersjach działa python -m json.tool plik.json, a dokumentacja Pythona potwierdza, że ta forma nadal jest obsługiwana. Poprawny plik zostanie wypisany z wcięciami. Polskie litery pojawią się wtedy jako sekwencje w rodzaju \u00f3, bo moduł domyślnie zastępuje znaki spoza ASCII. Dodaj --no-ensure-ascii, a zobaczysz zwykłe “ó”.
Plik z błędem kończy się komunikatem i kodem wyjścia 1. Dla pliku z przecinkiem po ostatniej wartości dostaliśmy:
Illegal trailing comma before end of object: line 3 column 21 (char 44)
Komunikat podaje wiersz i kolumnę, w której parser się zatrzymał. Błąd bywa jeden znak wcześniej, na przykład brakujący przecinek w poprzednim wierszu.
Walidatory i formatery w przeglądarce działają tak samo wygodnie, ale wklejasz do nich dane na cudzy serwer. Plik z danymi klientów, konfiguracją albo kluczami API sprawdzaj lokalnie. Jak kończy się wyciek kluczy, pokazaliśmy przy włamaniu do OpenCode Console.
Najczęstsze błędy w plikach JSON
Większość błędów to nawyki przeniesione z JavaScriptu albo Pythona, gdzie te same zapisy są dozwolone. Każdy wiersz tabeli sprawdziliśmy funkcją json.loads w Pythonie 3.14.3 na Windows 11. W innych wersjach Pythona treść komunikatu może się różnić.
| Błąd | Przykład | Komunikat Pythona 3.14.3 |
|---|---|---|
| przecinek po ostatniej wartości | {"miasto": "Kraków", "temperatura": 7,} | Illegal trailing comma before end of object: line 1 column 38 (char 37) |
| apostrofy zamiast cudzysłowów | {'miasto': 'Kraków'} | Expecting property name enclosed in double quotes: line 1 column 2 (char 1) |
| nazwa bez cudzysłowu | {miasto: "Kraków"} | Expecting property name enclosed in double quotes: line 1 column 2 (char 1) |
| komentarz | {"miasto": "Kraków" // stacja} | Expecting ',' delimiter: line 1 column 21 (char 20) |
True wielką literą | {"alert": True} | Expecting value: line 1 column 11 (char 10) |
| brak przecinka między parami | {"miasto": "Kraków" "temperatura": 7} | Expecting ',' delimiter: line 1 column 21 (char 20) |
| pusty plik | (brak treści) | Expecting value: line 1 column 1 (char 0) |
Osobny przypadek to NaN, czyli “nie liczba”. RFC 8259 go zabrania, a Python mimo to przyjmuje {"opady": NaN} bez błędu. Dokumentacja Pythona przyznaje, że moduł domyślnie akceptuje NaN i Infinity tak, jakby były poprawnym JSON-em. Ten sam tekst w Node.js 22 kończy się błędem SyntaxError: Unexpected token 'N', "{"opady": NaN}" is not valid JSON. Plik, który przechodzi w Pythonie, może więc nie przejść w innym programie.

JSON w Pythonie i JavaScripcie
W obu językach JSON zamienia się na zwykłe struktury danych jednym poleceniem. Python wczytuje plik modułem json i daje słownik:
import json
with open("przyklad.json", encoding="utf-8") as plik:
dane = json.load(plik)
print(dane["miasto"], dane["temperatura"])
print(dane["prognoza"][0]["max"])
Dla przykładu z tego tekstu program wypisuje Kraków 7.5 i 9. Parametr encoding="utf-8" warto podawać jawnie, bo Windows bez niego potrafi odczytać polskie znaki w innym kodowaniu. Więcej o tej pułapce piszemy w tekście o Pythonie 3.15 i polskich znakach.
W JavaScripcie robią to JSON.parse i JSON.stringify:
const tekst = '{"miasto": "Kraków", "temperatura": 7.5, "alert": false}';
const dane = JSON.parse(tekst);
console.log(dane.miasto, dane.temperatura + 1);
console.log(JSON.stringify(dane, null, 2));
W Node.js 22 pierwszy console.log wypisuje Kraków 8.5, a drugi ten sam obiekt z wcięciem dwóch spacji. Liczba z JSON-a jest od razu liczbą, więc dodawanie działa bez konwersji.
JSON a XML a CSV: czym się różnią
JSON, XML i CSV przechowują te same dane, ale tylko JSON zachowuje bez dodatkowego opisu typ wartości. Sprawdziliśmy to na jednym rekordzie odczytanym standardowymi modułami Pythona.
| Cecha | JSON | XML | CSV |
|---|---|---|---|
| zapis rekordu | {"miasto": "Kraków", "temperatura": 7.5, "alert": false} | <pogoda><miasto>Kraków</miasto><temperatura>7.5</temperatura><alert>false</alert></pogoda> | miasto;temperatura;alert i w drugim wierszu Kraków;7.5;false |
| typ wartości po odczycie w Pythonie | liczba i wartość logiczna | tekst '7.5' i 'false' | tekst '7.5' i 'false' |
| zagnieżdżanie | tak | tak | nie, tylko wiersze i kolumny |
| komentarze | nie | tak | nie |
| gdzie spotkasz | API, pliki ustawień, n8n | faktury KSeF, ePUAP, dokumenty ZUS | eksport z Excela i banku |
XML ma za to schematy, przestrzenie nazw i podpisy elektroniczne, dlatego trzymają się go urzędy. Jak czytać takie pliki, opisaliśmy w poradniku jak otworzyć plik XML i XAdES. CSV wygrywa prostotą, gdy dane są płaską tabelą.

Gdzie spotkasz JSON w pracy: API, n8n i modele AI
W JSON-ie najczęściej rozmawiają ze sobą aplikacje w internecie. Gdy aplikacja pogodowa, sklep czy bank pobiera dane z serwera przez REST API, odpowiedź przychodzi zwykle jako JSON z nagłówkiem application/json.
W automatyzacjach JSON jest wszędzie. Dokumentacja n8n mówi wprost: “all data passed between nodes is an array of objects”, czyli dane między węzłami to tablica obiektów, a właściwe dane każdego elementu leżą pod kluczem json. Kto buduje przepływy w n8n, Make albo Zapierze, czyta JSON przy każdym błędzie w węźle. Porównanie tych trzech narzędzi zebraliśmy w tekście n8n, Make czy Zapier.
Trzecie miejsce to modele AI. Według dokumentacji OpenAI funkcja Structured Outputs sprawia, że poprawnie zakończona odpowiedź modelu jest zgodna z podanym schematem JSON Schema, więc program dostaje pola wymagane przez schemat. Odmowę odpowiedzi albo odpowiedź przerwaną limitem tokenów trzeba obsłużyć osobno. Przykład zapytania do API od klucza po pierwszą odpowiedź pokazaliśmy w tekście o API ChatGPT w Pythonie.
Do tego dochodzą pliki ustawień programów, na przykład settings.json w Visual Studio Code. To odmiana JSON with Comments, w której edytor dopuszcza komentarze. Zwykły parser JSON takiego pliku z komentarzami nie przyjmie.
FAQ
Czy JSON to język programowania?
Nie. JSON to format zapisu danych, bez instrukcji, warunków i pętli. Programy w różnych językach tylko go czytają i zapisują, tak jak czytają plik CSV.
Czy JSON może mieć komentarze?
Standardowy JSON nie dopuszcza komentarzy, a RFC 8259 ich nie przewiduje. Python na komentarz // odpowiada błędem Expecting ',' delimiter. Komentarze akceptują tylko niektóre programy w odmianie JSON with Comments, jak pliki ustawień VS Code.
Jak utworzyć plik JSON?
Wpisz dane w Notatniku albo edytorze kodu i zapisz plik z rozszerzeniem .json w kodowaniu UTF-8. Potem sprawdź go poleceniem python -m json plik.json, bo jeden brakujący cudzysłów wystarczy, żeby program odrzucił cały plik.
Co to jest JSONL?
JSON Lines (rozszerzenie .jsonl) to plik, w którym każdy niepusty wiersz jest osobnym, kompletnym JSON-em. Tak zapisuje się na przykład logi i duże zbiory rekordów. Firefox wyświetla taki plik jako tablicę zwijanych wpisów, a Python czyta go opcją --json-lines.
Sklep, księgowość i CRM nie rozmawiają ze sobą?
Łączymy systemy, których używasz na co dzień, z KSeF, Allegro i BaseLinkerem, żeby dane przestały krążyć w arkuszach i mailach. Zaczynamy od połączenia, które dziś zabiera najwięcej czasu.
Podsumowanie
JSON to tekstowy format danych z obiektami w nawiasach klamrowych i tablicami w kwadratowych. Zna sześć typów wartości: tekst w podwójnym cudzysłowie, liczbę, true lub false, null, obiekt i tablicę. Plik JSON przeczytasz w Notatniku, Firefoksie albo VS Code, a do tabeli w Excelu wczytasz go przez Dane > Pobierz dane > Z pliku > JSON. Gdy program odrzuca plik, uruchom python -m json plik.json i szukaj błędu w podanym wierszu albo tuż przed nim. Najczęściej winny jest przecinek po ostatniej wartości, apostrofy albo komentarz. Pamiętaj też, że Python przepuszcza NaN, którego inne programy nie przyjmą. Pliki z kluczami API albo danymi osobowymi sprawdzaj lokalnie, nie w walidatorach w przeglądarce.



