Vai al contenuto

Converti JSON in classi di casi Scala — Numio

Trasforma un campione JSON in classi di casi Scala. Gli oggetti nidificati diventano classi case e array separati Seq[...]; i valori null e le chiavi mancanti da alcuni elementi dell'array diventano Option[...].

Disegnare modelli per un JSON API prima di aggiungere un codec Circe, Play JSON o uPickle.

JSON

Scala Case Class

Quando usarlo

  • Disegnare modelli per un JSON API prima di aggiungere un codec Circe, Play JSON o uPickle.
  • Trasformazione di un payload Kafka o HTTP di esempio in classi case per un lavoro Spark o Akka.

Come si usa

  1. Incolla un oggetto JSON; per i campi facoltativi includere diversi elementi dell'array con chiavi diverse.
  2. Controlla l'output: la classe radice è RootInterface e le classi nidificate prendono il nome dalle loro chiavi in PascalCase (gli altoparlanti diventano Altoparlanti).
  3. Copia le classi, rinominale e restringi qualsiasi Option[Any] o Seq[Any] che l'esempio non è riuscito a digitare.

Ingresso JSON

{
  "id": 7,
  "type": "conference",
  "price": 49.9,
  "venue": null,
  "tags": ["jvm", "fp"],
  "speakers": [
    { "name": "Martin", "talk": "Keynote" },
    { "name": "Li", "talk": "Effects", "slides": "https://example.com/s.pdf" }
  ]
}

Classi di casi Scala

case class RootInterface(
  id: Int,
  `type`: String,
  price: Double,
  venue: Option[Any],
  tags: Seq[String],
  speakers: Seq[Speakers]
)

case class Speakers(
  name: String,
  talk: String,
  slides: Option[String]
)

Dettagli e limiti

Funziona nel browser con il generatore proprio del sito; nessuna chiamata al server. La pagina non ha impostazioni e non aggiunge importazioni o derivazioni di codec.

Tutti gli elementi di un array vengono uniti: una chiave mancante in alcuni elementi, o nulla in alcuni, diventa Option[...] e 12 accanto a 1.5 diventa Double.

Un valore che è sempre e solo null fornisce Option[Any] e una matrice vuota Seq[Any], perché l'esempio non ha alcun tipo da mostrare.

Le parole e le chiavi riservate che non sono identificatori sono racchiuse tra apici inversi, come `type`; Le chiavi snake_case vengono mantenute così come sono scritte.

FAQ

Genera un'opzione per i campi nullable?

Sì. Una chiave il cui valore è null diventa Option[...], digitata dagli altri esempi quando la chiave ha anche valori reali, altrimenti Option[Any]. Anche le chiavi mancanti in alcuni elementi dell'array sono Opzione.

Cosa succede con un array JSON alla radice?

I suoi elementi vengono uniti in un'unica classe case RootInterface, con chiavi mancanti da alcuni elementi come Opzione e viene aggiunto il tipo RootInterfaceList = Seq[RootInterface].

Un ID a 64 bit è digitato così lungo?

Solo quando un valore campione non rientra nell'intervallo Int (circa ±2,1 miliardi). Gli altri numeri interi diventano Int, quindi modifica gli ID o i timestamp in Long se possono crescere.

Specifiche e riferimenti