Przejdź do treści

Konwertuj dane JSON na schemat GraphQL — Numio

Generuje typy obiektów GraphQL SDL z przykładowego JSON. Korzeń staje się AutogeneratedMainType, każdy zagnieżdżony obiekt lub tablica obiektów staje się typem nazwanym, a wszystkie elementy tablicy są scalane w jeden typ.

Rysowanie typów opakowania GraphQL wokół istniejącego punktu końcowego REST na podstawie jednej z jego odpowiedzi.

JSON

GraphQL

Kiedy go używać

  • Rysowanie typów opakowania GraphQL wokół istniejącego punktu końcowego REST na podstawie jednej z jego odpowiedzi.
  • Pobieranie schematu początkowego dla próbnego serwera lub prototypu pierwszego schematu z przykładowych danych.

Jak używać

  1. Wklej obiekt JSON lub tablicę obiektów połączonych w jeden typ główny do lewego edytora lub użyj przycisku ładowania pliku, aby otworzyć plik UTF-8.
  2. Sprawdź wygenerowane typy: nazwy pochodzą z kluczy (posts staje się Posts), a skalary są mapowane na String, Int, Float lub Boolean.
  3. Skopiuj SDL, a następnie dodaj ! dla wymaganych pól zmień pola identyfikatora na ID i zmień nazwę AutogeneratedMainType.

Obiekt JSON

{
  "id": "u_1",
  "name": "Ada",
  "age": 36,
  "score": 9.5,
  "nickname": null,
  "tags": ["math"],
  "address": { "city": "London" },
  "posts": [{ "id": 7, "title": "Notes" }]
}

Schemat GraphQL (SDL)

type AutogeneratedMainType {
  id: String
  name: String
  age: Int
  score: Float
  nickname: String
  tags: [String]
  address: Address
  posts: [Posts]
}

type Address {
  city: String
}

type Posts {
  id: Int
  title: String
}

Szczegóły i ograniczenia

Pola są scalane we wszystkich elementach tablicy. tablice o wartości null i puste stają się Stringami i [Stringami]; Int zmieszany z Float staje się Float, a inne konflikty wracają do String.

Nazwy typów pochodzą z kluczy (posts staje się Posts). Jeśli ten sam klucz zawiera obiekty o różnych strukturach, późniejszy typ otrzymuje nazwę od rodzica (np. AB), zamiast nadpisywać poprzedni.

Nie są generowane ! (non-null), ID, typ Query ani typy input. Liczby całkowite poza zakresem 32-bitowym otrzymują typ Float, ponieważ GraphQL Int jest 32-bitowy.

Działa w przeglądarce, a wynik jest sformatowany za pomocą Prettier; niepoprawny JSON pokazuje błąd analizy.

FAQ

Czy mogę przekonwertować tablicę JSON w katalogu głównym?

Tak, jeśli zawiera obiekty: wszystkie elementy są scalane w AutogeneratedMainType, zatem uwzględniane są pola, które pojawiają się tylko w niektórych elementach. Tablica główna zawierająca zwykłe wartości jest odrzucana, ponieważ nie zawiera pól.

Dlaczego moje pole identyfikatora ma wartość String zamiast ID?

Typy wynikają tylko z wartości JSON: tekstowe id staje się String, a liczba Int. Ręcznie zmień typ na ID:.

Jak wpisuje się wartości null?

Jako String, ponieważ wartość null nie ma typu. Zastąp ją rzeczywistą wartością próbki, jeśli pole jest liczbą lub obiektem.

Specyfikacje i referencje