Conversor de Swift para JSON
Cole structs de Swift ou tipos Codable. Receba JSON limpo de volta.
O que essa ferramenta faz
Se você já definiu um struct em Swift, fez ele conformar a Codable e percebeu que só precisava do JSON, sem subir um playground ou um simulador — essa ferramenta resolve. Cole o Swift aqui e receba JSON válido sem encostar em JSONEncoder, Xcode ou Swift Package Manager. Ela lida com uma única instância de struct, com um arquivo inteiro com vários tipos, ou com algo cheio de arrays aninhados e optionals — o resultado é o mesmo: um documento JSON limpo com todas as propriedades preservadas.
O conversor segue como os valores Swift de fato são serializados pelo JSONEncoder. String, Int, Double, Bool mapeiam para seus equivalentes óbvios em JSON. Arrays [Item] viram arrays JSON; dicionários [String: V] viram objetos JSON. Optional<T> com nil vira null em JSON (ou é omitido, dependendo da estratégia do encoder). UUID sai como uma string hexadecimal padrão, Date sai como string ISO-8601 e URL vira string. Enums com raw value emitem o valor bruto — o mesmo comportamento que você tem com Foundation.JSONEncoder.
CodingKeys customizados são respeitados — se você renomeou uma propriedade para o JSON (case shippingAddress = "shipping_address"), a saída usa a chave renomeada. Tipos Codable aninhados são expandidos inline. Cole vários structs de uma vez e cada um vira uma entrada de nível superior na saída. Se quiser se aprofundar em como o Swift modela JSON, o apple/swift tem o fonte, e o Hacking with Swift tem explicações bem escritas sobre o protocolo Codable.
Como usar
Três passos. Funciona igual se você colar uma instância de struct ou um arquivo de modelos inteiro.
Cole seu Swift (ou carregue o exemplo)
Jogue o Swift como está no editor da esquerda. Um struct, uma class, um enum com valores associados, vários tipos ou arrays e dicionários aninhados — tudo passa. Clique em Carregar exemplo para ver primeiro um caso realista.
Você não precisa tirar o import Foundation nem os atributos @available. Deixe a sintaxe do Swift intacta — o parser dá conta.
Clique em Converter
Clique no botão verde Converter. A ferramenta lê o Swift, preserva cada propriedade e tipo aninhado, e emite o JSON numa única passada. Um indicador curto de loading aparece enquanto ela trabalha.
Copie o JSON
O painel da direita enche de JSON indentado. Copie para o seu teste com URLSession, para uma fixture de MockURLProtocol, para exemplos de OpenAPI ou para um cliente REST. É esse o ciclo todo.
Quando isso realmente salva
Fixtures de API em iOS
Você tem um struct de request para uma chamada <code>URLSession</code> e precisa de um payload JSON para o Postman ou um teste. Cola o struct, pega o JSON e segue.
Respostas de mock server
Transforme seus tipos <code>Codable</code> de resposta em JSON para jogar num mock server, num <code>MockURLProtocol</code> ou num arquivo de resposta gravada — sem precisar de nenhuma chamada ao <code>JSONEncoder</code>.
Testes de backend Vapor / SwiftNIO
Um serviço Vapor com 20 tipos <code>Content</code>. Gere arquivos JSON de seed para testes de integração sem escrever uma única chamada de encode.
Docs e exemplos de OpenAPI
Gere exemplos JSON para a sua spec OpenAPI ou a referência de API direto dos seus modelos reais, para a documentação não sair do sincronismo.
Perguntas frequentes
O tipo precisa conformar a Codable?
O tipo não precisa conformar de verdade no seu código para a ferramenta funcionar — o conversor lê o formato e produz o JSON direto. No seu app, Codable (ou pelo menos Encodable) é como você chega ao mesmo resultado em runtime via JSONEncoder.
Ele respeita CodingKeys customizados?
Sim. Se o seu tipo define enum CodingKeys: String, CodingKey com raw values customizados (case shippingAddress = "shipping_address"), a saída usa essas chaves renomeadas.
Como ficam Optionals, Dates e UUIDs?
Optional<T> com nil vira null em JSON. Date sai como string ISO-8601 por padrão (igual JSONEncoder.DateEncodingStrategy.iso8601). UUID vira uma string hexadecimal padrão. URL vira string.
E enums com valores associados?
Enums com raw value emitem o valor diretamente. Enums com valores associados saem como um objeto tagueado — a mesma forma que o próprio Swift produz quando você codifica um case com valores associados.
Meu código é armazenado?
Seu código é enviado para o backend para a conversão e não fica persistido — a gente não loga o payload. Dá uma revisada em código sensível antes de colar.
Funciona para modelos SwiftUI e property wrappers?
Sim — property wrappers como @Published são desempacotados para o valor interno. Classes ObservableObject com propriedades @Published serializam limpas. Tipos de view específicos do SwiftUI não são dados serializáveis, mas qualquer modelo que fica atrás das suas views vale.
Outras ferramentas que podem ajudar
Swift para JSON é só uma peça do quebra-cabeça. Estas combinam bem: