JSON → Scala 3 & 2

JSON to Scala 3 & Scala 2 Case Class Generator

Converta payloads JSON em case classes tipadas para Scala com suporte a codecs automáticos do Circe, Play JSON e zio-json.

Predefinições:
Root:
Package:
5 Classes32 CamposProfundidade: 2
Entrada
package com.example.models

import java.time.Instant

import io.circe._
import io.circe.generic.semiauto._
import io.circe.syntax._

final case class Customer(
  customerId: String,
  email: String,
  fullName: String,
  loyaltyTier: String,
  registeredAt: Instant
) derives Codec.AsObject

final case class ShippingAddress(
  street: String,
  city: String,
  state: String,
  postalCode: String,
  country: String
) derives Codec.AsObject

final case class LineItem(
  sku: String,
  title: String,
  unitPrice: BigDecimal,
  quantity: Int,
  taxRate: BigDecimal,
  inStock: Boolean
) derives Codec.AsObject

final case class Payment(
  transactionRef: String,
  method: String,
  isAuthorized: Boolean,
  paidAt: Instant
) derives Codec.AsObject

final case class OrderPayload(
  orderId: String,
  orderNumber: String,
  customer: Customer,
  shippingAddress: ShippingAddress,
  lineItems: List[LineItem],
  subtotal: BigDecimal,
  taxAmount: BigDecimal,
  totalAmount: BigDecimal,
  currency: String,
  payment: Payment,
  discountCode: Option[String] = None,
  notes: String
) derives Codec.AsObject
5
Case Classes Inferred
32
Campos
Nível 2
Max AST Hierarchy Depth

Execução Local Zero-Knowledge

Todo o processamento, análise e geração de código ocorrem estritamente na memória do seu navegador. Zero uploads para servidores externos.

Motor Reativo de Submilissegundos

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de Case Classes JSON para Scala 3 e 2 — Guia de referência

Converta payloads JSON em case classes tipadas para Scala com suporte a codecs automáticos do Circe, Play JSON e zio-json.

Parâmetros principais e controles

Versão Alvo do ScalaEnum (Scala 3 | Scala 2.13)

Define o padrão de código gerado: sintaxe com 'derives' no Scala 3 ou companion objects com implicits no Scala 2.13.

Padrão: Scala 3
Biblioteca de Codec JSONEnum (Circe | Play JSON | zio-json | None)

Biblioteca escolhida para produzir os encoders, decoders e formatters de serialização.

Padrão: Circe
Nome da Classe RaizString

Nome identificador da case class de nível superior que encapsula o JSON raiz.

Padrão: RootResponse
Tratamento de Nulos e OpcionaisEnum (Option[T] | Strict T)

Encapsula atributos nulos ou chaves ausentes em arrays dentro de Option[T] para garantir segurança contra NullPointerException.

Padrão: Option[T]

Dicas profissionais e melhores práticas

Aproveite a Cláusula 'derives' do Scala 3

No Scala 3 com zio-json ou Circe, a cláusula 'derives JsonCodec' elimina completamente a necessidade de escrever companion objects manuais.

Escape de Palavras-Chave Reservadas

Propriedades JSON como 'type', 'val' ou 'lazy' são envolvidas por crases (ex: `type`: String) para evitar falhas de compilação no compilador scalac.

Decomposição Hierárquica Limpa

Objetos aninhados profundos são extraídos em case classes auxiliares reutilizáveis, mantendo o código modular e legível.

Problemas comuns e solução de problemas

Estruturas Heterogêneas em Listas JSON

Se os itens de um array apresentarem campos divergentes, o gerador combina os atributos e define os campos variáveis como Option[T].

Identificadores com Caracteres Especiais

Chaves como 'api-key' são convertidas para camelCase e recebem anotações como @JsonKey para manter o mapeamento exato com a API.

Perguntas frequentes (FAQ)

Qual a principal diferença entre os formatos do Scala 3 e do Scala 2?▼

O Scala 3 aproveita a cláusula 'derives' e sintaxe sem chaves, enquanto o Scala 2.13 constrói companion objects contendo instâncias implícitas.

Quais bibliotecas de JSON são compatíveis?▼

Oferece suporte total ao Circe (io.circe.generic), zio-json, Play JSON (play.api.libs.json) e case classes padrão sem dependências externas.

Como os tipos numéricos são resolvidos?▼

Valores inteiros são mapeados para Int ou Long conforme a magnitude, e números fracionários são mapeados para Double ou BigDecimal.

Os dados inseridos são enviados para algum servidor?▼

Não. Todo o processamento e a geração do código-fonte ocorrem 100% no cliente pelo navegador, sem tráfego de rede para servidores externos.

Ferramentas e utilitários relacionados

Todas as ferramentas →