Przejdź do treści

Konwerter JSON na JSON Schema — Numio

Wnioskuje schemat JSON (wersja robocza 07) z próbki JSON. W przypadku tablic obiektów wszystkie elementy są łączone: brakujący klucz lub wartość null w niektórych elementach jest pomijana.

Tworzenie pierwszego schematu walidacji dla odpowiedzi API lub ładunku webhooka na podstawie przechwyconych przykładów.

JSON

JSON Schema

Kiedy go używać

  • Tworzenie pierwszego schematu walidacji dla odpowiedzi API lub ładunku webhooka na podstawie przechwyconych przykładów.
  • Tworzenie schematu do wprowadzenia do Ajv, OpenAPI lub JSON Schemat do kroku TypeScript/Zod.

Jak używać

  1. Wklej próbkę JSON do lewego edytora lub użyj przycisku ładowania pliku, aby otworzyć plik UTF-8. Tablica kilku rekordów daje lepsze wymagane listy.
  2. Przeczytaj schemat: wymagany jest każdy klucz w pojedynczym obiekcie, a klucze nieobecne lub o wartości null w niektórych elementach tablicy są opcjonalne.
  3. Skopiuj schemat i dodaj ograniczenia, których próbka nie może pokazać, takie jak formaty, wyliczenia, liczby całkowite i minimalne.

Próbka JSON

[
  { "id": 1, "name": "Ada", "email": null },
  { "id": 2, "name": "Lin", "email": "lin@example.com" }
]

Schemat JSON (wersja robocza 07)

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Generated schema for Root",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "number"
      },
      "name": {
        "type": "string"
      },
      "email": {
        "type": "string"
      }
    },
    "required": [
      "id",
      "name"
    ]
  }
}

Szczegóły i ograniczenia

Liczby zawsze otrzymują "type": "number"; integer, formaty (email, date-time), enum i pattern nie są wywnioskowywane. Tytuł zawsze ma wartość "Generated schema for Root".

Pole, które wszędzie ma wartość null, otrzymuje pusty schemat {}. Wartość null znajdująca się obok innych wartości jest traktowana jako opcjonalna, a nie jako typ null.

Tablice typu mieszanego, takie jak [1, "x"] stają się krotką (lista elementów z additionalItems: false); pusta tablica daje elementy: {}.

Wygenerowane w przeglądarce przez json_typegen, skompilowane do WebAssembly. Nieprawidłowy JSON (łącznie z końcowymi przecinkami) pokazuje błąd analizy JSON, a pojedyncza wartość, taka jak 42, jest odrzucana, ponieważ nie ma struktury.

FAQ

Którą wersję roboczą schematu JSON generuje?

Wersja robocza 07, zadeklarowana jako „$schema”: „http://json-schema.org/draft-07/schema#". Nie ma możliwości wyboru 2019-09 lub 2020-12.

W jaki sposób wykrywane są pola opcjonalne?

Tylko pomiędzy elementami tej samej tablicy: brakujący klucz w niektórych obiektach lub null w niektórych jest pomijany. W jednym obiekcie wymagany jest każdy klucz.

Czy może przekonwertować tablicę JSON w katalogu głównym?

Tak. Korzeń otrzymuje „type”: „array”, a elementy są łączone w jeden schemat elementów, jak w przykładzie.

Specyfikacje i referencje