DocumentosImagensMídiaFerramentas PDF

JSON para Swift Struct Online

Gere structs Swift Codable a partir de JSON, grátis, no seu navegador.

Processed in your browser

De JSON para Swift Codable Struct

Pronto para iOS e SwiftUI

Gera structs compatíveis com URLSession, Alamofire, SwiftUI e Combine. Cole diretamente no Xcode.

100% privado

Seu JSON de API nunca sai do seu navegador. Sem cadastro, sem telemetria.

Codable correto

CodingKeys automático para snake_case, Optional para nullable, tipos corretos (Int, Double, Bool). Código idiomático.

Instantâneo

Structs gerados em tempo real enquanto você digita. Sem botões, sem esperas.

Três passos, sem complicação

1

Cole seu JSON

Cole o JSON da sua API ou resposta web. Funciona com objetos aninhados, arrays e qualquer estrutura JSON válida.

2

Geração instantânea

A ferramenta gera structs Swift conformes ao protocolo Codable automaticamente, com CodingKeys quando necessário.

3

Copie o código

Copie as structs geradas e use-as diretamente no seu projeto iOS, macOS ou SwiftUI.

Ficou com dúvidas?

Codable é um alias de tipo introduzido no Swift 4 (WWDC 2017) que combina dois protocolos: Encodable (pode ser convertido para um formato externo como JSON) e Decodable (pode ser criado a partir de um formato externo). Um tipo conforme ao Codable pode tanto serializar quanto desserializar dados. A conformidade é obtida automaticamente via síntese do compilador se todas as propriedades também forem conformes ao Codable.

Para modelos de dados JSON, structs são preferidas por vários motivos: structs são value types (copiam em vez de referenciar), evitando problemas de estado compartilhado; o compilador pode otimizá-las melhor; e no SwiftUI, structs funcionam melhor com o modelo de dados reativo. Classes (reference types) têm seu lugar quando você precisa de herança ou identidade de objeto, mas para modelos de API structs são a prática recomendada.

CodingKeys é um enum aninhado que mapeia nomes de propriedades Swift para nomes de chaves no JSON. É necessário quando os nomes JSON (tipicamente snake_case em APIs REST) diferem das convenções Swift (camelCase). Por exemplo, se o JSON tem first_name, o CodingKey mapeia essa chave para o campo firstName da struct. Sem CodingKeys, Swift exige que os nomes JSON correspondam exatamente aos nomes das propriedades.

Em Swift, um tipo Optional (marcado com ?) pode ter um valor ou ser nil. Quando um campo JSON pode estar ausente ou ser null, a propriedade da struct é declarada como Optional: var email: String? em vez de var email: String. O JSONDecoder do Foundation trata a desserialização automaticamente: se a chave estiver ausente do JSON ou seu valor for null, a propriedade é definida como nil sem lançar um erro.

O fluxo típico com URLSession e Codable é: URLSession.shared.dataTask retorna Data; JSONDecoder().decode com o tipo da struct e os dados converte os dados para a struct; o resultado é usado na UI na thread principal. Com Swift 5.5+ e async/await, use let data = try await URLSession.shared.data(for: request) seguido de let objeto = try JSONDecoder().decode com o tipo e os dados. Esse padrão é a base de toda integração de API no iOS moderno.

Swift para iOS/macOS, o protocolo Codable (2017) e integração de APIs com SwiftUI

Swift foi apresentado pela Apple na WWDC 2014 como sucessor do Objective-C para o desenvolvimento de apps no iOS, macOS, watchOS e tvOS. Com a introdução do Codable no Swift 4 (WWDC 2017), o trabalho com JSON foi radicalmente simplificado. Antes do Codable, os desenvolvedores usavam bibliotecas de terceiros como SwiftyJSON ou extensões Codable do Alamofire. Com Codable nativo, você só precisa do JSONDecoder e structs bem tipadas, sem dependências externas.

SwiftUI, introduzido na WWDC 2019, reforçou o uso de structs como modelos de dados. A arquitetura do SwiftUI baseada em value types e o protocolo View como struct se encaixa perfeitamente com modelos Codable. Padrões como MVVM (Model-View-ViewModel) no SwiftUI usam @Published em ViewModels ObservableObject com structs Codable como modelos, criando um fluxo de dados previsível e testável.

Com Swift 5.5 (WWDC 2021) e a introdução de async/await, o consumo de APIs REST ficou ainda mais limpo. URLSession.shared.data(for:) agora é uma função async que elimina os completion handlers aninhados (callback hell). Combinado com JSONDecoder, o padrão completo de fetch e decode tem apenas 3 linhas de código. Esta ferramenta gera as structs Codable necessárias para esse padrão, processando tudo no seu navegador sem enviar seus dados a nenhum servidor.