XML vs JSON – porównanie formatów

TL;DR: JSON jest prostszy, lżejszy i szybszy do parsowania niż XML. XML ma więcej możliwości (atrybuty, namespace, schema validation) ale jest verbose. W 2016 roku JSON dominuje w API webowych i mobile, XML nadal używany w enterprise i dokumentach.

Jeśli tworzysz API lub aplikację która wymienia dane z innymi systemami, musisz wybrać format danych. Dwa najpopularniejsze to XML i JSON. W 2016 roku obserwujemy masową migrację z XML na JSON, ale warto zrozumieć różnice i wiedzieć kiedy który format wybrać.

Dlaczego wybór formatu ma znaczenie

Format danych wpływa na wydajność aplikacji, łatwość development i kompatybilność z różnymi systemami. JSON zyskuje popularność przez prostotę i szybkość, podczas gdy XML pozostaje standardem w systemach enterprise wymagających zaawansowanej walidacji i struktury.

Wybór między XML a JSON ma realny wpływ na business. Szybsze API oznacza lepszą user experience w aplikacjach mobilnych. Prostszy format oznacza szybszy development i mniej błędów. Z drugiej strony, niektóre branże (fintech, healthcare) wymagają możliwości XML.

Co się nauczysz:

  • Podstawowe różnice między XML i JSON
  • Zalety i wady każdego formatu
  • Kiedy wybrać XML, a kiedy JSON
  • Przykłady praktycznego użycia obu formatów
  • Trendy i przyszłość formatów danych

Wymagania wstępne:

  • Podstawowa znajomość programowania
  • Rozumienie pojęć: API, dane strukturalne
  • Znajomość HTML będzie pomocna dla XML
  • Podstawy JavaScript będą przydatne dla JSON

JSON – JavaScript Object Notation

Analogia: JSON to jak notatka na kartce – tylko najważniejsze informacje, bez zbędnych ozdób. XML to jak oficjalny dokument – wszystko opisane, oznaczone, z nagłówkami i stopkami.

JSON to lekki format wymiany danych, inspirowany składnią obiektów JavaScript:

{
  "name": "Jan Kowalski",
  "age": 30,
  "email": "jan@example.com",
  "active": true,
  "address": {
    "street": "Marszałkowska 1",
    "city": "Warszawa",
    "zipCode": "00-001"
  },
  "skills": ["Java", "Spring", "SQL"],
  "projects": null
}

Zalety JSON:

  • Prostota – minimalna składnia, łatwy do odczytania
  • Kompaktowość – mniej znaków niż XML
  • Natywne wsparcie JavaScript – JSON.parse() i JSON.stringify()
  • Szybkie parsowanie – mniej overhead niż XML
  • Wsparcie typów danych – string, number, boolean, array, object, null

XML – eXtensible Markup Language

XML to rozszerzalny język znaczników, podobny do HTML ale bardziej elastyczny:

<?xml version="1.0" encoding="UTF-8"?>
<person id="123" status="active">
  <name>Jan Kowalski</name>
  <age>30</age>
  <email>jan@example.com</email>
  <address>
    <street>Marszałkowska 1</street>
    <city>Warszawa</city>
    <zipCode>00-001</zipCode>
  </address>
  <skills>
    <skill>Java</skill>
    <skill>Spring</skill>
    <skill>SQL</skill>
  </skills>
  <projects />
</person>

Zalety XML:

  • Atrybuty – dodatkowe metadane w tagach
  • Namespace – unikanie konfliktów nazw
  • Schema validation – XSD, DTD do walidacji struktury
  • Komentarze – można dodawać
  • XSLT – transformacje do innych formatów
  • XPath – zaawansowane zapytania do danych

Szczegółowe porównanie

AspektJSONXML
CzytelnośćBardzo dobraDobra (verbose)
RozmiarKompaktowy (~30% mniejszy)Większy (tagi, atrybuty)
ParsowanieSzybkieWolniejsze
Typy danych6 typów podstawowychTylko stringi (wymaga konwersji)
AtrybutyBrakTak
KomentarzeBrakTak
Schema validationJSON Schema (nowe)XSD, DTD (dojrzałe)
NamespaceBrakTak
Wsparcie językówWszystkieWszystkie

Wydajność – liczby mówią wszystko

Porównanie tego samego zestawu danych:

Przykład – lista 100 użytkowników:

  • JSON: 8.2 KB, parsowanie 2.3ms
  • XML: 12.7 KB, parsowanie 8.1ms
  • Oszczędność JSON: 35% mniej danych, 70% szybsze parsowanie

Te różnice są szczególnie widoczne w aplikacjach mobilnych gdzie każdy KB i milisekunda ma znaczenie.

Praktyczne przykłady użycia

REST API – JSON dominuje

GET /api/users/123
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "name": "Jan Kowalski",
  "email": "jan@example.com",
  "lastLogin": "2016-06-25T10:30:00Z"
}

SOAP Web Services – XML wymagane

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getUserRequest xmlns="http://example.com/user">
      <userId>123</userId>
    </getUserRequest>
  </soap:Body>
</soap:Envelope>

Konfiguracja aplikacji

// package.json (Node.js)
{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "express": "^4.14.0",
    "mongoose": "^4.5.0"
  },
  "scripts": {
    "start": "node app.js",
    "test": "mocha"
  }
}
<!-- Maven pom.xml -->
<project xmlns="http://maven.apache.org/POM/4.0.0">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
  
  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.0.RELEASE</version>
    </dependency>
  </dependencies>
</project>

Kiedy wybrać JSON

✅ JSON jest lepszy gdy:

  • Tworzysz REST API – standard w nowoczesnych aplikacjach
  • Aplikacje mobilne – rozmiar i szybkość parsowania krytyczne
  • JavaScript frontend – natywne wsparcie w przeglądarkach
  • NoSQL bazy danych – MongoDB, CouchDB używają JSON-podobnych formatów
  • Prostota struktury – nie potrzebujesz zaawansowanych features

Kiedy wybrać XML

✅ XML jest lepszy gdy:

  • Enterprise integration – SOAP, ESB, legacy systems
  • Potrzebujesz schema validation – ścisła kontrola struktury danych
  • Dokumenty strukturalne – tekst z formatowaniem, metadane
  • Namespace są wymagane – unikanie konfliktów nazw
  • Standardy branżowe – HL7 w healthcare, FpML w finance

Trendy w 2016 roku

Obserwacje z rynku:

  • REST API – 95% nowych API używa JSON
  • Mobile development – JSON prawie wyłącznie
  • Mikrousługi – JSON jako standard komunikacji
  • IoT devices – JSON przez prostotę i rozmiar
  • Enterprise – XML nadal dominuje w systemach korporacyjnych

Alternatywne formaty

W 2016 roku pojawiają się również inne formaty:

  • Protocol Buffers – Google, binary format, bardzo szybki
  • MessagePack – binary JSON, kompaktowy
  • YAML – human-readable, popularne w konfiguracji
  • BSON – Binary JSON, używane przez MongoDB

Best practices

Pro tips:

  • API consistency – trzymaj się jednego formatu w całym API
  • Content-Type headers – zawsze określaj typ contentu
  • Error handling – używaj spójnego formatu dla błędów
  • Versioning – planuj ewolucję struktury danych
  • Validation – waliduj dane niezależnie od formatu
Błąd #1: Mieszanie formatów w jednym API – niektóre endpointy JSON, inne XML.
Błąd #2: Używanie XML tylko dlatego że „jest bardziej profesjonalne” – prostota JSON ma wartość.
Błąd #3: Brak walidacji danych – format nie gwarantuje poprawności treści.
Czy można konwertować XML na JSON i odwrotnie?

Tak, istnieją biblioteki do konwersji. Ale uwaga na utratę informacji – atrybuty XML nie mają odpowiednika w JSON, a typy danych JSON mogą zostać utracone w XML.

Który format jest bezpieczniejszy?

Oba są równie bezpieczne przy właściwej walidacji. XML ma długą historię ataków (XXE, XML bombs), ale JSON też może być podatny na injection attacks. Walidacja input jest kluczowa.

Czy JSON zastąpi XML całkowicie?

Nie całkowicie. JSON dominuje w nowych projektach, ale XML pozostanie w enterprise systems, document processing i wszędzie gdzie potrzebne są jego zaawansowane możliwości.

Jak parsować XML i JSON w Javie?

JSON: biblioteki Jackson, Gson. XML: JAXB, DOM, SAX parsers. JSON jest prostszy – mniej konfiguracji, automatic mapping do objektów Java.

Co z wydajnością w aplikacjach mobilnych?

JSON wygrywa zdecydowanie. Mniejszy rozmiar = mniej danych do przesłania = szybsze loading. Szczególnie ważne na wolnych connections i ograniczonych data plans.

Przydatne zasoby:

🚀 Zadanie dla Ciebie

Stwórz ten sam zestaw danych w formacie JSON i XML:

  • Lista książek z tytułem, autorem, ISBN, rokiem wydania
  • Każda książka ma listę kategorii
  • Dodaj informacje o dostępności (boolean)
  • Include wydawcy z nazwą i adresem

Porównaj:

  • Rozmiar plików (liczba znaków)
  • Czytelność dla człowieka
  • Łatwość dodania nowego pola
  • Które format wolałbyś otrzymać jako developer?

Masz pytania o wybór między XML i JSON? Podziel się swoimi doświadczeniami w komentarzach – każdy format ma swoje miejsce w nowoczesnym IT!

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry