JSON Schema – czyli sposób na opisanie struktury JSON

Przykład zastosowania JSON Schema przy użyciu biblioteki dla języka PHP.

748
views

Niedawno, w jednym z realizowanych projektów zaistniała potrzeba sprawdzania czy dostarczony przez klienta końcowego dokument JSON jest prawidłowy pod względem struktury.

Nie potrzebowaliśmy walidacji na poziomie poprawności wartości (np. czy identyfikator kategorii faktycznie występuje w naszym systemie). Ważny był dla nas fakt, aby schemat dostarczonych danych w formacie JSON był taki jakiego sobie życzymy. Musiał zawierać odpowiednie właściwości, a dane musiały być odpowiedniego typu (np. string, number, object). Odrzucaliśmy w ten sposób błędne dokumenty jeszcze przed rozpoczęciem ich właściwego przetwarzania.

Ręczna implementacja każdego z oczekiwanych schematów JSON wymagała by od nas sporego nakładu pracy. Na szczęście istnieje coś takiego jak JSON Schema.

Czym jest JSON Schema

JSON Schema pozwala na opisanie struktury dokumentu JSON, w sposób przejrzysty i czytelny dla człowieka. Następnie na tej podstawie można zwerferyfikować czy dostarczony dokument JSON spełnia założone kryteria.

Świetnie nadaje się do wykorzystania przy testach automatycznych (np. API) oraz walidacji danych wysyłanych do aplikacji przez użytkownika.

Więcej informacji oraz wyczerpującą dokumentację możesz znaleźć na stronie: json-schema.org.

Przykład JSON Schema

Dla następującego dokumentu JSON:

Implementacja schematu wygląda w sposób przedstawiony poniżej:

Opisane zostały wymagane pola oraz ich prawidłowe typy danych. Na oficjalnej stronie JSON Schema można również podpatrzeć kilka innych przykładów.

Do stworzenia takiego opisu dokumentu, można wykorzystać narzędzie JSON Schema Generator. Na podstawie dostarczonego dokumentu JSON, generowany jest jego opis w formacie JSON Schema.

Przykład walidacji (PHP)

Do walidacji schematu wykorzystałem zewnętrzną bibliotekę: justinrainbow/json-schema.

Wystarczy zainstalować ją za pomocą Composer:

$: composer require justinrainbow/json-schema

Zastosowanie w praktyce:

Zmienna $jsonToValid zawiera ścieżkę do danych przechowywanych w formacie JSON. Natomiast $schemaFile ścieżkę do pliku z schematem JSON Schema.

Podsumowanie

Walidacja schematu dokumentu JSON nie musi być uciążliwa i „manualna”. Dzięki zastosowaniu JSON Schema i generatora JSON Schema Generator można ułatwić i zautomatyzować sobie pracę. W moim przypadku przyśpieszyło to znacząco wdrożenie funkcji walidacji schematu dostarczanych przez użytkownika danych w formacie JSON.

Poprzedni artykułWarstwa logiki – UseCase
Następny artykułRelacja z konferencji 4developers
Na co dzień Software Engineer. Fascynat programowania, architektury, metodyk zwinnych i dobrych praktyk w szerokim ujęciu. Polyglot Programer kochający poznawać nowe języki jednocześnie wykorzystując ich najlepsze strony. Założyciel DevEnv i współautor podcastu Dev:Cast. After Hours czyli gdy nie pracuje i nie robi czegoś na DevEnv - podróżnik w miejsca zapomniane, pasjonat lokalnej historii. Mocno zajarany survivalem, urbexem i militariami. Jest jednym z opiekunów schronu bojowego WAWOK w Rybniku.
PODZIEL SIĘ