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
- Incolla un oggetto JSON; per i campi facoltativi includere diversi elementi dell'array con chiavi diverse.
- Controlla l'output: la classe radice è RootInterface e le classi nidificate prendono il nome dalle loro chiavi in PascalCase (gli altoparlanti diventano Altoparlanti).
- 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.