Naar de inhoud

Converteer JSON-gegevens naar GraphQL-schema — Numio

Genereert GraphQL SDL-objecttypen uit voorbeeld JSON. De root wordt AutogeneratedMainType, elk genest object of elke reeks objecten wordt een benoemd type en alle array-elementen worden samengevoegd tot één type.

Opmaaktypen voor een GraphQL-wrapper rond een bestaand REST-eindpunt vanuit een van de reacties.

JSON

GraphQL

Wanneer gebruik je dit?

  • Opmaaktypen voor een GraphQL-wrapper rond een bestaand REST-eindpunt vanuit een van de reacties.
  • Op basis van voorbeeldgegevens een startschema voor een nepserver of een schema-eerste prototype verkrijgen.

Hoe werkt het

  1. Plak een JSON-object, of een reeks objecten die zijn samengevoegd tot één hoofdtype, in de linkereditor, of gebruik de knop Bestand laden om een UTF-8-bestand te openen.
  2. Controleer de gegenereerde typen: namen komen van de sleutels (posts worden posts) en scalaires worden toegewezen aan String, Int, Float of Boolean.
  3. Kopieer de SDL en voeg vervolgens ! voor verplichte velden wijzigt u de id-velden in ID en hernoemt u AutogeneratedMainType.

JSON-object

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

GraphQL-schema (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
}

Details en beperkingen

Velden worden samengevoegd over alle array-elementen. null en lege arrays worden String en [String]; Int vermengd met Float wordt Float, en andere conflicten vallen terug op String.

Typenamen komen van sleutels (posts worden posts). Als dezelfde sleutel verschillend gevormde objecten bevat, wordt de laatste vernoemd naar de ouder (bijvoorbeeld AB) in plaats van te overschrijven.

Nee! (niet-null), ID, querytype of invoertypen worden gegenereerd. Gehele getallen buiten het 32-bits bereik worden met Float getypt, omdat GraphQL Int 32-bits is.

Draait in uw browser en het resultaat is geformatteerd met Prettier; ongeldige JSON toont de parseerfout.

FAQ

Kan ik een JSON-array in de root converteren?

Ja, als het objecten bevat: alle elementen worden samengevoegd in AutogeneratedMainType, dus velden die slechts in sommige elementen voorkomen, worden opgenomen. Een rootarray met gewone waarden wordt afgewezen omdat deze geen velden bevat.

Waarom is mijn ID-veld String in plaats van ID?

Typen komen alleen uit de waarde JSON: een string-ID wordt String en een getal wordt Int. Wijzig dit in ID: met de hand.

Hoe worden nulwaarden getypt?

Als String, omdat een nulwaarde geen type heeft. Vervang het door een echte voorbeeldwaarde als het veld een getal of object is.

Specificaties en referenties