Colle le Scala à gauche et clique sur "Convertir" — on te le transforme en JSONColle ton code Scala

À quoi sert cet outil

Si tu as un case class Scala avec une douzaine de champs et qu'il te faut le payload JSON correspondant — pour un test, un appel d'API, une fixture de message Kafka — le faire à la main devient vite pénible. Colle ton Scala ici et tu récupères du JSON valide. Un seul case class, un fichier entier ou une instance construite avec des arguments nommés — même flow, même résultat.

Le convertisseur reproduit ce que sortent les libs JSON Scala courantes. Circe, Play JSON et uPickle sérialisent un case class en transformant ses champs en clés JSON — c'est exactement ce que tu obtiens ici. Int, Long, Double et BigDecimal deviennent des nombres JSON. Boolean reste un booléen. Option[A] prend la valeur quand c'est Some(x), ou null / est omis quand c'est None. Instant, LocalDateTime et les types java.time sortent en chaînes ISO-8601.

Les collections suivent le mapping évident. List, Seq, Vector et Set deviennent des tableaux JSON. Map[String, A] devient un objet JSON. Les tuples deviennent des tableaux JSON mixtes. Si tu colles un sealed trait avec des case classes enfants (un ADT), chaque variante se sérialise avec sa propre forme, et le parser reconnaît le motif discriminateur d'ADT utilisé par la plupart des libs. Colle plusieurs classes de premier niveau depuis un même fichier (voir le repo Scala pour t'inspirer) et chacune sort en entrée JSON distincte.

Comment l'utiliser

Trois étapes. Ça marche pareil pour un case class isolé ou un fichier de modèle entier.

1

Colle ton Scala (ou essaie l'exemple)

Balance ton Scala tel quel dans l'éditeur de gauche. Un case class, une hiérarchie de sealed trait, une instance ou plusieurs classes — tout passe. Clique sur Charger un exemple si tu veux voir un cas réaliste d'abord.

Garde tes imports, les déclarations de package et les annotations. Le parser ignore ce qui n'est pas de la donnée. Pour les détails du langage, docs.scala-lang.org est la référence officielle.

2

Clique sur Convertir

Appuie sur le bouton vert Convertir. L'outil lit le Scala, parcourt chaque classe et chaque champ, et produit le JSON en une passe. Un petit indicateur de chargement s'affiche pendant le traitement.

3

Copie le JSON

Le panneau de droite se remplit avec du JSON indenté. Copie-le dans un spec ScalaTest, une réponse mockée Akka HTTP, une fixture Play, ou dans la doc de ton API.

Quand ça sert vraiment

Fixtures ScalaTest

Il te faut un body JSON pour stubber un client HTTP dans un test de service Scala. Colle le case class, récupère le payload, colle-le dans ton spec.

Payloads HTTP Akka / Play

Transforme un case class en JSON que tu POSTerais à ton propre service. Pratique pour des tests rapides au curl quand tu câbles un nouvel endpoint.

Exemples de messages Kafka

Génère des messages JSON d'exemple pour un nouveau topic Kafka directement à partir de tes case classes de domaine — sans exemples écrits à la main qui dérivent dans le temps.

Doc qui colle au code

Produis des exemples JSON pour la doc d'API directement depuis tes vrais case classes, pour que la doc reste juste quand les modèles évoluent.

Questions fréquentes

Comment sont sérialisées les valeurs Option ?

Some(x) devient la valeur x ; None devient null en JSON. C'est le comportement par défaut de Circe. Si tu préfères que les clés soient omises pour None, tu peux les retirer après coup — la valeur par défaut garde une forme prévisible.

Et les sealed traits et ADT ?

Les sealed traits avec des enfants case class sont sérialisés par variante. Quand plusieurs variantes partagent un trait parent, le motif discriminateur classique ({"type": "OrderPlaced", ...}) utilisé par Circe et Play JSON est appliqué, pour que tu puisses round-tripper la donnée vers l'ADT.

Comment il gère les types java.time ?

Instant, LocalDate, LocalDateTime et ZonedDateTime sont sérialisés en chaînes ISO-8601. C'est la convention partagée par Circe, Play JSON et uPickle, et ça round-trip proprement vers java.time.

Il gère Map, List, Vector, Set ?

Oui. List, Seq, Vector et Set deviennent des tableaux JSON. Map[String, A] devient un objet JSON — les maps à clés non-string (Map[Int, A]) sortent en tableaux de paires clé/valeur, puisque JSON n'accepte que des clés string.

Je peux coller un fichier entier avec plusieurs case classes ?

Oui. Chaque classe de premier niveau devient sa propre entrée JSON, avec les instances imbriquées développées. Les companion objects, conversions implicites et méthodes utilitaires sont ignorés — seule la donnée arrive en sortie.

Mon code est-il stocké ?

Ton Scala est envoyé au backend pour la conversion et n'est pas persisté. On ne loggue pas le payload. Si ton code est sensible, jette-lui un œil avant de le coller.

Autres outils qui peuvent servir

Scala vers JSON n'est qu'une pièce du puzzle. Ceux-ci vont bien avec :