JSON: co to jest, struktura danych i zasada działania

Autor: IT Sectr Opublikowano: 2026-03-08 Czas czytania: 8 min

JSON (JavaScript Object Notation) — to lekki tekstowy format wymiany danych, oparty na składni obiektów JavaScript. Jest używany wszędzie: od REST API i plików konfiguracyjnych po przechowywanie danych w bazach i aplikacjach mobilnych. Według oficjalnej strony JSON, format nie jest zależny od języka programowania i jest obsługiwany przez praktycznie wszystkie nowoczesne platformy. JSON stał się standardem de facto do przesyłania danych między klientem a serwerem.

Najważniejsze

  • JSON — lekki tekstowy format dla danych strukturalnych oparty na składni JavaScript
  • Sześć typów danych — string, liczba, boolean, null, tablica i obiekt dla dowolnych struktur
  • Uniwersalność — obsługiwany przez wszystkie języki programowania i platformy
  • REST API — podstawowy format wymiany danych w aplikacjach webowych i mobilnych
  • Czytelność — prosty składnia łatwo czytelna i edytowalna bez narzędzi

Co to jest JSON?

JSON — to tekstowy format do reprezentacji danych strukturalnych, oparty na składni JavaScript. Mimo pochodzenia z JavaScript, format jest całkowicie niezależny od języka — parser i serializatory istnieją dla wszystkich popularnych języków programowania.

Historia JSON rozpoczęła się na początku lat 2000., kiedy Douglas Crockford wydzielił podzbiór składni JavaScript do wymiany danych. W 2013 roku format został znormalizowany jako ECMA-404, a później jako ISO/IEC 21778:2017. Nazwa oznacza JavaScript Object Notation.

Główną zaletą JSON jest minimalistyczna składnia. Do opisu danych używa się tylko sześciu typów: string, liczba, boolean, null, tablica i obiekt. To wystarcza do reprezentacji dowolnych struktur danych używanych w aplikacjach.

Gdzie używany jest JSON

  • REST API — podstawowy format zapytań i odpowiedzi między serwerem a klientem
  • Pliki konfiguracyjne — package.json, tsconfig.json, .prettierrc
  • Bazy danych — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Aplikacje mobilne — przechowywanie ustawień, buforowanie danych
  • Technologie webowe — WebSocket, Server-Sent Events, localStorage

Składnia i typy danych JSON

Składnia JSON jest niezwykle prosta: dane są reprezentowane jako pary klucz-wartość, gdzie klucz to string w podwójnych cudzysłowach, a wartość to jeden z sześciu podstawowych typów. Obiekty są zamykane w nawiasy klamrowe, tablice w kwadratowe. Stringi obowiązkowo używają podwójnych cudzysłowów, pojedyncze cudzysłowy są niedozwolone.

Liczby w JSON mogą być całkowite lub zmiennoprzecinkowe, dodatnie lub ujemne, z notacją wykładniczą. Wartości logiczne są reprezentowane przez literały true i false, a brak wartości przez null. Tablice zawierają uporządkowany zbiór wartości dowolnego typu, w tym zagnieżdżone tablice i obiekty.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "obsługa zagnieżdżania"
  }
}
Typ Przykład Opis
String “tekst” W podwójnych cudzysłowach, z sekwencjami escape
Liczba 42 Całkowita, zmiennoprzecinkowa, wykładnicza
Boolean true true lub false — bez cudzysłowów
null null Brak wartości
Obiekt {} Nieuporządkowany zbiór par klucz-wartość
Tablica [] Uporządkowana lista wartości

JSON w REST API

JSON jest podstawowym formatem wymiany danych dla REST API w rozwoju mobilnym i webowym. Serwer wysyła JSON w treści odpowiedzi, klient — w treści zapytania. Standardowy nagłówek Content-Type dla JSON to application/json.

Nowoczesne REST API używają JSON do przesyłania wszystkich typów danych: od prostych list po złożone zagnieżdżone struktury z relacjami między encjami. Biblioteka kliencka (np. Axios w JavaScript lub Retrofit na Android) automatycznie serializuje i deserializuje JSON, oszczędzając programiście ręcznego parsowania.

Ważną zaletą JSON w REST API jest możliwość częściowego przesyłania danych (partial response) przez parametry zapytania, a także obsługa zagnieżdżonych zasobów bez dodatkowych zapytań do serwera.

Parsowanie JSON na platformach mobilnych

Parsowanie JSON na platformach mobilnych jest wykonywane wbudowanymi narzędziami. Android używa bibliotek Gson od Google lub Moshi od Square, iOS — protokołu Codable z JSONDecoder. Każda platforma zapewnia wygodne narzędzia do konwersji JSON na natywne obiekty i odwrotnie.

JSON na Android (Kotlin)

Na Android popularne jest podejście z użyciem Gson lub Moshi. Wystarczy zdefiniować data class z adnotacjami @SerializedName i wywołać fromJson do deserializacji. Biblioteka automatycznie dopasowuje nazwy pól w JSON do pól klasy.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON na iOS (Swift)

Na iOS używany jest wbudowany protokół Codable z JSONDecoder. Struktura danych jest deklarowana jako struct z protokołem Codable, po czym JSON jest parsowany jedną linią. JSONEncoder wykonuje odwrotną serializację — przekształca obiekt na JSON do wysłania na serwer.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: porównanie formatów

JSON i XML — dwa główne formaty do przesyłania danych strukturalnych. JSON wygrywa prostotą i wydajnością, XML — ścisłością i walidacją. Wybór między nimi zależy od wymagań projektu: dla REST API częściej wybiera się JSON, dla złożonych dokumentów ze schematami — XML.

XML wymaga zamykających tagów dla każdego elementu, co zwiększa rozmiar danych 2-3 razy w porównaniu z JSON. Jednocześnie XML obsługuje przestrzenie nazw, schematy XSD, atrybuty i transformację XSLT, co czyni go potężniejszym dla zadań obiegu dokumentów i integracji systemów korporacyjnych.

Cecha JSON XML
Składnia Minimalistyczna, klucz-wartość Tagowa, otwierające i zamykające tagi
Rozmiar danych Kompaktowy 2-3 razy większy niż JSON
Typy danych Sześć podstawowych typów Tylko tekst, typy przez schematy
Walidacja Brak wbudowanej, przez JSON Schema XSD — ścisła i dojrzała
Przestrzenie nazw Brak Pełna obsługa namespace
Szybkość parsowania Wysoka Niższa ze względu na złożoność

Przykłady pracy z JSON

Przykłady demonstrują typowe operacje z JSON w rozwoju mobilnym: parsowanie odpowiedzi API, tworzenie JSON do wysyłki i obsługę zagnieżdżonych struktur. Zrozumienie tych wzorców jest niezbędne dla każdego programisty aplikacji mobilnych.

Serializacja obiektu do JSON

W JavaScript JSON.stringify przekształca obiekt na string JSON. Drugim argumentem można przekazać tablicę kluczy do selektywnej serializacji lub funkcję zastępującą. Trzeci argument określa wcięcia do formatowania.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

Parsowanie zagnieżdżonego JSON

W Kotlin z biblioteką Moshi zagnieżdżone obiekty JSON są obsługiwane przez zagnieżdżone data classy. Adnotacja @Json wskazuje nazwę pola w JSON, jeśli różni się od nazwy właściwości klasy. Tablice są reprezentowane jako List z typem elementu.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: walidacja struktury

JSON Schema — to język opisu struktury dokumentu JSON, analogiczny do XSD dla XML. Za pomocą JSON Schema można określić obowiązkowe pola, typy danych, zakresy wartości, wzorce stringów i zagnieżdżoną strukturę. Walidacja według schematu wykrywa błędy danych przed ich przetworzeniem w aplikacji.

JSON Schema jest szeroko używana w OpenAPI (Swagger) do dokumentowania REST API, w formularzach walidacji danych wejściowych i w testowaniu. Plik schematu sam jest dokumentem JSON, co pozwala na używanie standardowych parserów JSON do jego odczytu. Istnieją walidatory online i biblioteki dla wszystkich popularnych języków programowania.

W rozwoju mobilnym JSON Schema jest używana do walidacji odpowiedzi z serwera na etapie testowania i do sprawdzania plików konfiguracyjnych. Biblioteki takie jak network-validator na Androidzie czy json-schema-validator pozwalają wbudować walidację bezpośrednio w proces rozwoju, zapobiegając błędom na wczesnych etapach.

Często zadawane pytania

Jakie typy danych obsługuje JSON?

JSON obsługuje sześć typów: string (w podwójnych cudzysłowach), liczbę (całkowitą i zmiennoprzecinkową), boolean (true/false), null, obiekt (pary klucz-wartość w {}) i tablicę (listę wartości w []). To wystarcza dla dowolnych struktur danych w aplikacjach.

Czy można używać komentarzy w JSON?

Nie, standard JSON nie obsługuje komentarzy. Jeśli potrzebujesz komentarzy, użyj JSON5 (rozszerzony JSON) lub dodaj pole z opisem, na przykład “_comment”: “wyjaśnienie”. Niektóre narzędzia, jak VS Code, obsługują komentarze w konfiguracyjnych plikach JSON, ale to niestandardowe rozszerzenie.

Czym JSON różni się od JSONB w PostgreSQL?

JSONB — to binarny format przechowywania JSON w PostgreSQL. W przeciwieństwie do tekstowego JSON, JSONB jest szybciej przetwarzany, obsługuje indeksowanie (indeksy GIN) i gwarantuje unikalność kluczy. Jednocześnie JSONB zajmuje więcej miejsca na dysku z powodu dodanych metadanych.

Jak sprawdzić poprawność JSON?

Użyj JSONLint (jsonlint.com) do szybkiego sprawdzenia, wbudowanego JSON.parse() w JavaScript z try-catch, lub wtyczek IDE. Walidacja obejmuje sprawdzenie poprawności cudzysłowów, zamknięcia nawiasów i zgodności typów. Dla złożonych schematów użyj JSON Schema Validator.

Jaki jest maksymalny rozmiar pliku JSON?

Brak ograniczenia w specyfikacji JSON. W praktyce rozmiar jest ograniczony pamięcią urządzenia i możliwościami parsera. Dla aplikacji mobilnych zaleca się nie przekraczać 1-2 MB na jedną odpowiedź, a dla dużych danych używać paginacji lub przesyłania strumieniowego.

Podsumowanie

  • JSON — minimalistyczny format tekstowy z sześcioma typami danych do wymiany strukturalnych informacji
  • Niezależność od języka — parsery JSON istnieją dla wszystkich popularnych języków programowania
  • REST API używa JSON jako standardowego formatu zapytań i odpowiedzi w aplikacjach mobilnych
  • Parsowanie jest wykonywane wbudowanymi narzędziami: Gson/Moshi na Android, Codable na iOS
  • JSON jest bardziej kompaktowy niż XML 2-3 razy, ale ustępuje Protobuf w wydajności
  • Czytelność — składnia jest łatwo czytelna i debugowalna bez specjalnych narzędzi
  • JSON Schema — dodatkowe narzędzie do walidacji struktury i typów danych

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również