ToolHub
View All Posts

Jak walidować JSON: Kompletny przewodnik z przykładami

JSON (JavaScript Object Notation) jest podstawą nowoczesnych API webowych, plików konfiguracyjnych i wymiany danych. Ale nieprawidłowy JSON może powodować awarie aplikacji, niepowodzenia integracji API i godziny frustracji przy debugowaniu. Ten przewodnik przeprowadzi cię przez wszystko, co musisz wiedzieć o walidacji JSON, od podstawowego sprawdzania składni po zaawansowaną walidację Schema z rzeczywistymi przykładami.

Dlaczego walidacja JSON jest ważna

Nieprawidłowy JSON jest jednym z najczęstszych źródeł błędów w aplikacjach webowych. Źle umieszczony przecinek, niezacytowany klucz lub przecinek końcowy mogą spowodować, że JSON.parse() zgłosi SyntaxError, załamując cały potok danych. Walidacja wychwytuje te błędy wcześnie, zanim rozprzestrzenią się w systemie i spowodują awarie downstream.

Poza poprawnością składniową, walidacja zapewnia również zgodność danych JSON z oczekiwaną strukturą. API może zwrócić poprawny JSON, ale z brakującymi wymaganymi polami, nieprawidłowymi typami danych lub wartościami poza akceptowalnym zakresem. Walidacja Schema rozwiązuje te problemy strukturalne.

Reguły składni JSON

Zanim zagłębisz się w narzędzia walidacyjne, kluczowe jest zrozumienie reguł, które czynią JSON poprawnym. JSON ma ścisłą składnię zdefiniowaną przez RFC 8259, a nawet pojedyncze naruszenie znaku unieważnia cały dokument.

Stringi muszą używać podwójnych cudzysłowów

Wszystkie wartości stringów i klucze obiektów muszą być ujęte w podwójne cudzysłowy. Pojedyncze cudzysłowy nie są prawidłowymi separatorami stringów JSON — to częsty błąd popełniany przez programistów przechodzących z JavaScript.

// Invalid - single quotes
{'name': 'Alice', 'age': 30}

// Valid - double quotes
{"name": "Alice", "age": 30}

Klucze obiektów muszą być w cudzysłowach

W przeciwieństwie do literałów obiektów JavaScript, JSON wymaga, aby wszystkie klucze obiektów były ujęte w podwójne cudzysłowy. Niezacytowane klucze są błędem składniowym.

// Invalid - unquoted keys
{name: "Alice", age: 30}

// Valid - quoted keys
{"name": "Alice", "age": 30}

Przecinek końcowy niedozwolony

JSON nie zezwala na przecinek po ostatnim elemencie obiektu lub tablicy. To kolejny częsty błąd, szczególnie przy ręcznej edycji JSON.

// Invalid - trailing comma
{
  "name": "Alice",
  "age": 30,
}

// Valid - no trailing comma
{
  "name": "Alice",
  "age": 30
}

Komentarze nieobsługiwane

JSON nie obsługuje komentarzy. // komentarze jednoliniowe i /* */ komentarze wieloliniowe są nieprawidłowe w JSON. Jeśli potrzebujesz dokumentacji, użyj osobnego pliku lub formatu takiego jak JSONC.

Częste błędy walidacji JSON

Zrozumienie najczęstszych błędów pomaga szybko je wykryć i naprawić. Oto błędy, które najczęściej napotkasz:

Walidacja JSON w JavaScript

Najprostszym sposobem walidacji JSON w JavaScript jest opakowanie JSON.parse() w blok try-catch. Jeśli JSON jest nieprawidłowy, metoda zgłasza SyntaxError.

function validateJSON(jsonString) {
  try {
    JSON.parse(jsonString);
    return { valid: true };
  } catch (error) {
    return {
      valid: false,
      error: error.message
    };
  }
}

const result = validateJSON('{"name": "Alice"}');
console.log(result);
// { valid: true }

const badResult = validateJSON("{'name': 'Alice'}");
console.log(badResult);
// { valid: false, error: "Unexpected token '..." }

Walidacja JSON w Python

Python udostępnia moduł json z funkcją json.loads() do parsowania stringów JSON. Podobnie jak w JavaScript, nieprawidłowy JSON zgłasza json.JSONDecodeError ze szczegółowymi informacjami o lokalizacji.

import json

def validate_json(json_string):
    try:
        json.loads(json_string)
        return {"valid": True}
    except json.JSONDecodeError as e:
        return {
            "valid": False,
            "error": str(e),
            "line": e.lineno,
            "column": e.colno
        }

result = validate_json('{"name": "Alice"}')
print(result)
# {'valid': True}

Walidacja JSON Schema

Walidacja składniowa mówi tylko, czy JSON jest poprawnie sformatowany. JSON Schema pozwala zdefiniować oczekiwaną strukturę i walidować dane względem niej. Schema określa wymagane pola, typy danych, zakresy wartości, wzorce stringów i struktury zagnieżdżonych obiektów.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["name", "email"],
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

Popularne walidatory JSON Schema obejmują Ajv dla JavaScript, jsonschema dla Pythona i json-schema-validator dla Javy. Biblioteki te walidują dane JSON względem Twojego Schema i generują szczegółowe komunikaty o błędach dla każdego naruszenia.

Narzędzia do walidacji JSON online

Gdy potrzebujesz szybko sprawdzić dokument JSON bez pisania kodu, walidatory online są najszybszą opcją. Zapewniają natychmiastową informację zwrotną z podświetlaniem błędów i numerami linii.

Wypróbuj walidator JSON ToolHub, aby natychmiast zweryfikować swoje dane JSON. Oferuje szczegółowe komunikaty o błędach z numerami wierszy i kolumn, walidację w czasie rzeczywistym podczas pisania oraz formatowanie jednym kliknięciem.

Najlepsze praktyki walidacji JSON

Gotowy do walidacji swoich danych JSON? Wypróbuj nasz darmowy walidator JSON online z natychmiastowym wykrywaniem błędów i szczegółową informacją zwrotną.

Waliduj JSON teraz

FAQ

Czym jest walidacja JSON?

Walidacja JSON to proces sprawdzania, czy dokument JSON jest zgodny z poprawnymi regułami składniowymi oraz opcjonalnie czy jest zgodny z zdefiniowanym Schema. Walidacja składni zapewnia, że JSON jest poprawnie sformatowany, podczas gdy walidacja Schema zapewnia, że struktura danych pasuje do oczekiwanych typów, wymaganych pól i ograniczeń wartości.

Jakie są najczęstsze błędy JSON?

Najczęstsze błędy JSON obejmują: przecinki końcowe po ostatnim elemencie, używanie pojedynczych cudzysłowów zamiast podwójnych, niezacytowane klucze obiektów, komentarze (niedozwolone w JSON) oraz wartości undefined lub NaN. Błędy te powodują, że JSON.parse() zgłasza SyntaxError.

Jak walidować JSON w JavaScript?

Użyj JSON.parse() opakowanego w blok try-catch. Jeśli JSON jest nieprawidłowy, JSON.parse() zgłosi SyntaxError, który możesz przechwycić i obsłużyć. Do walidacji Schema użyj bibliotek takich jak Ajv, które implementują walidację JSON Schema.

Czym jest JSON Schema?

JSON Schema to słownictwo umożliwiające adnotację i walidację dokumentów JSON. Definiuje oczekiwaną strukturę, typy, wymagane pola, zakresy wartości, wzorce stringów i struktury zagnieżdżonych obiektów. Możesz go używać do walidacji danych JSON pod kątem zgodności z określonym formatem, wykraczając poza podstawową poprawność składniową.

Czy można walidować JSON online?

Tak, narzędzia do walidacji JSON online, takie jak walidator JSON ToolHub, pozwalają wkleić dane JSON i natychmiast sprawdzić, czy są poprawne, ze szczegółowymi komunikatami o błędach pokazującymi dokładny wiersz i kolumnę, gdzie wystąpił błąd.