Geração de tipos

JSON para SwiftModelos a partir de respostas reais

Compare os registros e veja quais propriedades precisam ser opcionais.

JSON para Swift

Entrada JSON

A análise e a geração ocorrem neste navegador. A entrada não é enviada nem armazenada.

Código gerado

Opções de geração

Int64 / Decimal; testado com Swift 6.3.1, macOS 26. Use makeJSONDecoder() e valide o sistema de destino.

O array raiz define o elemento Root; decodifique [Root].self.

2 structs · 2 propriedades opcionais

JSON para Swift ajuda a esboçar modelos com dados da sua API. Inclua respostas em que alguma chave não aparece: um objeto completo sozinho não revela todas as variações possíveis.

Este conversor JSON para Swift produz um struct Swift com CodingKeys e campos opcionais. A inferência descreve as amostras; requisitos de negócio e mudanças futuras ainda precisam ser definidos no projeto.

Por que usar JSON para Swift?

Considerar mais de um registro

JSON para Swift reúne os objetos na mesma posição de um array. Chaves ausentes e valores null tornam a propriedade opcional, enquanto valores sempre presentes conservam um tipo específico.

Dois cartões de objetos se juntam em um modelo, com um espaço vazio indicando uma propriedade opcional.

Controlar a leitura de datas

Por padrão, horários continuam como strings. A opção ISO conecta somente datas completas válidas a Date e ao decodificador correspondente; as outras strings não mudam de tipo.

Um cartão de horário se divide entre uma string preservada e um relógio por um caminho selecionado.

Defina como o modelo será lido

01

Use exemplos variados

A raiz deve ser um objeto ou array não vazio de objetos. Um array na raiz gera o modelo do elemento Root; use [Root].self na decodificação. Arrays internos também combinam todos os elementos.

02

Revise nomes e horários

Mantenha CodingKeys para snake_case e chaves especiais. Escolha camelCase ou preservar nomes válidos. A inferência ISO exige fuso horário e até três casas de fração de segundo.

03

Confirme a substituição

A geração automática aguarda 350 ms após editar. Desligue para usar o botão ou Ctrl/Cmd+Enter. Alterações bloqueiam exportações antigas imediatamente. Exemplo e Limpar mostram contagem de caracteres; aplicar guarda uma etapa de desfazer.

O que vem no arquivo

Estruturas no mesmo arquivo

JSON para Swift emite propriedades var e structs Codable. Objetos filhos não vazios recebem estruturas auxiliares; objetos vazios viram dicionários; dados mistos usam um enum JSONValue recursivo próprio, sem Any.

Tokens numéricos originais

Grupos escritos como inteiros dentro de 64 bits com sinal usam Int64. Decimais, expoentes, inteiros maiores e grupos que os contenham usam Foundation.Decimal. Não há conversão intermediária para JavaScript Number.

Semântica opcional explícita

O modo observado marca ausência e null; o modo global permite omitir todas as propriedades. Codable sintetizado lê ambos como nil e normalmente omite a propriedade na codificação. Os dois casos deixam de ser distinguíveis pelo valor.

Configuração de decoder

makeJSONDecoder() mantém a estratégia padrão de chaves. Quando há Date, tenta ISO8601DateFormatter com e sem fração de segundo. Para gravar texto ISO novamente, configure a estratégia de datas do JSONEncoder separadamente.

Limites antes de usar no app

Não é um esquema completo
Não lê JSON Schema ou OpenAPI nem adivinha enums, gera class, Core Data, SwiftData ou código de rede. Chaves desconhecidas são ignoradas na decodificação sintetizada. A verificação de calendário na inferência não torna o helper exportado um validador de negócio.
Orçamento numérico conservador
No máximo 38 dígitos significativos após remover zeros iniciais e finais; expoente original entre −128 e 127; expoente menos casas decimais de pelo menos −128; ordem decimal normalizada até 127. Vale também para dados mistos e a escrita original do zero.
Teste o sistema de destino
Compilação e ida e volta numérica foram testadas com Swift 6.3.1 no macOS 26, também no modo de linguagem Swift 5, não em compiladores antigos. Foundation antigo pode perder precisão Decimal. Verifique seu ambiente de implantação. A grafia 1.0 versus 1e0 não é preservada.
Date guarda um instante
Somente datas completas válidas, com fuso e até três casas de segundo, são inferidas quando todas as strings não null daquela posição atendem à regra. Data sem horário, sem fuso, inválida ou mais precisa permanece String. Fuso e formatação originais se perdem. A inferência aceita 1583–9999; datas anteriores ficam como String para evitar deslocamentos históricos de calendário. O helper também rejeita anos anteriores a 1583.
Chaves precisam ser distintas
Desligar CodingKeys rejeita qualquer renomeação necessária. Palavras reservadas, colisões e a propriedade CodingKeys são renomeadas. Surrogates isolados em chaves ou valores e chaves diferentes equivalentes em NFC no mesmo objeto ou modelo combinado são rejeitados.
Entrada estrita e limitada
Sem comentários, vírgulas finais, chaves duplicadas, reparo, arquivos, busca por URL ou execução Swift no navegador. Limites: 500.000 caracteres, 50.000 nós, profundidade 40, 100 campos por objeto combinado, 200 structs, 1.000 caracteres por chave/número e 1.000.000 na saída.

Dúvidas sobre JSON para Swift

O gerador aceita objetos e arrays aninhados?

Sim. JSON para Swift cria estruturas auxiliares para objetos não vazios e combina todos os elementos dos arrays. Na raiz, um array gera o modelo do elemento para [Root].self. Objetos vazios e dados mistos recebem tipos Codable mais amplos.

Existe limite de tamanho para a entrada?

Sim. A entrada aceita até 500.000 caracteres e 50.000 nós. Há também limites de profundidade 40, 100 campos por objeto combinado e 200 estruturas. Os números seguem um orçamento próprio de precisão; erros não são corrigidos silenciosamente.

A ferramenta funciona no celular?

Sim. Em telas estreitas, entrada e saída ficam empilhadas. É possível ajustar opções, copiar ou baixar a versão atual do código. O navegador do celular não compila Swift; faça essa etapa no projeto de destino.

Como são tratados campos ausentes e nulos?

Ausência em outra amostra e null produzem propriedades opcionais por padrão. A síntese Codable lê ambos como nil e costuma omiti-los ao codificar. Para distinguir ausência, null e valor, escreva uma implementação personalizada.

O que acontece quando uma chave não é um identificador válido?

O nome é ajustado com camelCase ou preservação dos identificadores válidos. Símbolos, palavras reservadas e colisões recebem nomes seguros com CodingKeys para a chave original. Sem mapeamento, entradas que exigem renomear geram erro.

Encontrou uma inferência que precisa melhorar?

Experimente respostas com variações

Use JSON para Swift com campos ausentes, null e números reais. Depois compile e decodifique o arquivo baixado no sistema em que seu app será executado.