Parser JSON
Parsuj, formatuj i waliduj dane JSON z wykrywaniem błędów w czasie rzeczywistym i pięknym formatowaniem.
• Wklej dowolne dane JSON, aby automatycznie je sformatować i zwalidować
• Użyj przycisku kopiowania, aby szybko skopiować sformatowany wynik
• Błędy będą podświetlone z pomocnymi komunikatami
Przewodnik po formacie JSON
Kompletny przewodnik po składni JSON, najlepszych praktykach i częstych przypadkach użycia, aby pomóc Ci opanować struktury danych JSON.
Format JSON: Kompletny Przewodnik i Najlepsze Praktyki
Czym jest JSON?
JSON (JavaScript Object Notation) to lekki, tekstowy format wymiany danych, który jest łatwy do odczytu i zapisu dla ludzi. Pomimo nazwy sugerującej związek z JavaScriptem, JSON jest niezależny od języka programowania i jest używany w praktycznie wszystkich nowoczesnych językach programowania.
Składnia i Struktura JSON
Podstawowe Zasady
- Dane w parach nazwa/wartość:
"nazwa": "wartość"
- Dane oddzielone przecinkami:
"nazwa1": "wartość1", "nazwa2": "wartość2"
- Nawiasy klamrowe zawierają obiekty:
{ }
- Nawiasy kwadratowe zawierają tablice:
[ ]
- Ciągi znaków muszą być w cudzysłowach:
"tekst"
Typy Danych
JSON obsługuje sześć podstawowych typów danych:
1. Ciąg znaków (String)
{
"imie": "Jan Kowalski",
"miasto": "Warszawa"
}
2. Liczba (Number)
{
"wiek": 30,
"cena": 99.99,
"temperatura": -5
}
3. Wartość logiczna (Boolean)
{
"aktywny": true,
"ukonczone": false
}
4. null
{
"drugie_imie": null
}
5. Obiekt (Object)
{
"adres": {
"ulica": "ul. Marszałkowska 123",
"miasto": "Warszawa",
"kod_pocztowy": "00-001"
}
}
6. Tablica (Array)
{
"hobby": ["czytanie", "pływanie", "programowanie"],
"punkty": [95, 87, 92, 88]
}
Popularne Zastosowania JSON
1. Odpowiedzi API
JSON to standardowy format odpowiedzi REST API:
{
"status": "sukces",
"dane": {
"uzytkownicy": [
{
"id": 1,
"imie": "Anna",
"email": "anna@example.com"
}
]
},
"wiadomosc": "Użytkownicy pobrani pomyślnie"
}
2. Pliki Konfiguracyjne
Wiele aplikacji używa JSON do konfiguracji:
{
"baza_danych": {
"host": "localhost",
"port": 5432,
"nazwa": "moja_aplikacja"
},
"logowanie": {
"poziom": "info",
"plik": "/var/log/app.log"
}
}
3. Przechowywanie Danych
JSON jest powszechnie używany w bazach danych NoSQL jak MongoDB:
{
"_id": "507f1f77bcf86cd799439011",
"tytul": "Post na blogu",
"tresc": "To jest treść...",
"tagi": ["technologia", "programowanie"],
"opublikowano": "2024-01-15T10:30:00Z"
}
Najlepsze Praktyki JSON
1. Używaj Znaczących Nazw
// Dobrze
{
"imie": "Jan",
"nazwisko": "Kowalski",
"adres_email": "jan@example.com"
}
// Unikaj
{
"i": "Jan",
"n": "Kowalski",
"e": "jan@example.com"
}
2. Bądź Konsekwentny z Konwencjami Nazewnictwa
Wybierz camelCase lub snake_case i trzymaj się tego:
// camelCase (zalecane dla JavaScript)
{
"imie": "Jan",
"nazwisko": "Kowalski",
"numerTelefonu": "555-1234"
}
// snake_case (popularne w Python/Ruby)
{
"imie": "Jan",
"nazwisko": "Kowalski",
"numer_telefonu": "555-1234"
}
3. Używaj Tablic dla List
{
"produkty": [
{
"id": 1,
"nazwa": "Laptop",
"cena": 2999.99
},
{
"id": 2,
"nazwa": "Mysz",
"cena": 89.99
}
]
}
4. Dołącz Metadane
Dla API, dołącz pomocne metadane:
{
"dane": [...],
"paginacja": {
"strona": 1,
"limit": 20,
"calkowite": 150,
"calkowite_strony": 8
},
"znacznik_czasu": "2024-01-15T10:30:00Z"
}
Częste Błędy JSON i Jak je Naprawić
1. Końcowe Przecinki
// ❌ Nieprawidłowe - końcowy przecinek
{
"imie": "Jan",
"wiek": 30,
}
// ✅ Prawidłowe
{
"imie": "Jan",
"wiek": 30
}
2. Pojedyncze Cudzysłowy
// ❌ Nieprawidłowe - pojedyncze cudzysłowy
{
'imie': 'Jan',
'wiek': 30
}
// ✅ Prawidłowe - podwójne cudzysłowy
{
"imie": "Jan",
"wiek": 30
}
3. Niecytowane Klucze
// ❌ Nieprawidłowe - niecytowane klucze
{
imie: "Jan",
wiek: 30
}
// ✅ Prawidłowe - cytowane klucze
{
"imie": "Jan",
"wiek": 30
}
4. Komentarze
JSON nie obsługuje komentarzy:
// ❌ Nieprawidłowe - komentarze niedozwolone
{
// To jest komentarz
"imie": "Jan",
"wiek": 30
}
// ✅ Prawidłowe - bez komentarzy
{
"imie": "Jan",
"wiek": 30
}
JSON vs Inne Formaty
JSON vs XML
- JSON: Lżejszy, łatwiejszy do parsowania, natywne wsparcie JavaScript
- XML: Bardziej rozwlekły, obsługuje atrybuty i przestrzenie nazw
JSON vs YAML
- JSON: Bardziej restrykcyjna składnia, lepszy dla API
- YAML: Bardziej czytelny dla ludzi, obsługuje komentarze
JSON vs CSV
- JSON: Obsługuje zagnieżdżone struktury, mieszane typy danych
- CSV: Płaska struktura, lepszy dla danych tabelarycznych
Zaawansowane Techniki JSON
1. JSON Schema
Zdefiniuj strukturę i reguły walidacji dla swojego JSON:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"imie": {
"type": "string",
"minLength": 1
},
"wiek": {
"type": "integer",
"minimum": 0
}
},
"required": ["imie", "wiek"]
}
2. JSON-LD (Linked Data)
Strukturalne dane dla SEO i sieci semantycznej:
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Jan Kowalski",
"jobTitle": "Programista",
"url": "https://jankowalski.com"
}
Narzędzia do Pracy z JSON
- Walidatory Online: JSONLint, JSON Formatter
- Rozszerzenia Przeglądarki: JSON Viewer, JSON Formatter
- Linia Komend: jq (procesor JSON)
- Rozszerzenia IDE: Narzędzia JSON dla VS Code, IntelliJ
Względy Bezpieczeństwa
1. Wstrzykiwanie JSON
Bądź ostrożny przy parsowaniu danych użytkownika:
// ❌ Niebezpieczne
const userInput = '{"imie": "Jan", "admin": true}';
const user = JSON.parse(userInput);
// ✅ Lepiej - waliduj strukturę
const user = JSON.parse(userInput);
if (typeof user.admin !== 'undefined') {
throw new Error('Nieprawidłowe dane użytkownika');
}
2. Duże Pliki JSON
Bądź świadomy użycia pamięci z dużymi plikami JSON:
// Dla dużych plików, rozważ parsery strumieniowe
const fs = require('fs');
const JSONStream = require('JSONStream');
fs.createReadStream('duzy-plik.json')
.pipe(JSONStream.parse('*'))
.on('data', function(data) {
// Przetwarzaj każdy obiekt
});
Wskazówki Wydajnościowe
- Minimalizuj rozmiar JSON: Usuń niepotrzebne białe znaki w produkcji
- Używaj kompresji: Włącz kompresję gzip dla JSON API
- Strumieniowanie: Dla dużych zbiorów danych, rozważ strumieniowanie JSON
- Buforowanie: Buforuj sparsowane obiekty JSON gdy to możliwe
JSON jest kluczową technologią dla nowoczesnego rozwoju webowego, zapewniając prosty lecz potężny sposób strukturyzowania i wymiany danych. Zrozumienie jego składni, najlepszych praktyk i częstych pułapek pomoże ci budować bardziej solidne i łatwe w utrzymaniu aplikacje.