Trabalhando com JSON em Swift: parsing e serialização para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao trabalho com JSON em Swift

JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado no desenvolvimento mobile e web. Para desenvolvedores iniciantes em Swift (iOS/macOS), saber trabalhar com JSON é uma habilidade obrigatória. Neste artigo, abordaremos duas abordagens principais: a clássica JSONSerialization e o protocolo moderno Codable. Você aprenderá como obter dados da rede, fazer parsing e convertê-los de volta para JSON para enviar ao servidor.

Independentemente de você estar criando um aplicativo de clima, lista de tarefas ou rede social — o JSON será seu companheiro fiel. Vamos começar com um exemplo simples e, gradualmente, avançar para cenários mais complexos.



Fundamentos do JSON em Swift: estrutura e tipos de dados

Antes de escrever código, é importante entender como o JSON se parece. Em Swift, o JSON é representado como dicionários ([String: Any]) e arrays ([Any]). Os principais tipos de dados em JSON são:

  • Strings — entre aspas duplas ("Olá")
  • Números — inteiros e de ponto flutuante (42, 3.14)
  • Valores booleanos — true ou false
  • Arrays — listas ordenadas de valores ([1, 2, 3])
  • Objetos — coleções não ordenadas de pares "chave-valor" ({"chave": "valor"})
  • null — valor vazio

Em Swift, para representar JSON, é conveniente usar estruturas de dados nativas. Vejamos um exemplo de um objeto JSON simples:

{  "nome": "João",  "idade": 25,  "ehEstudante": false,  "hobbies": ["leitura", "programação"]}

Agora vamos ver como trabalhar com esse formato no código Swift.



Parsing de JSON com JSONSerialization (método clássico)

Antes do surgimento do protocolo Codable, os desenvolvedores usavam a classe JSONSerialization. Esse método ainda é relevante, especialmente quando a estrutura do JSON é desconhecida antecipadamente ou muito dinâmica.

Exemplo básico de parsing

Suponha que temos uma string JSON que precisa ser convertida em objetos Swift:

let jsonString = """{  "nome": "Maria",  "idade": 30,  "estaEmpregada": true}"""

if let jsonData = jsonString.data(using: .utf8) { do { if let dicionario = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] { let nome = dicionario["nome"] as? String ?? "Desconhecido" let idade = dicionario["idade"] as? Int ?? 0 let estaEmpregada = dicionario["estaEmpregada"] as? Bool ?? false print("Nome: \\(nome), Idade: \\(idade), Empregada: \\(estaEmpregada)") } } catch { print("Erro ao fazer parsing do JSON: \\(error.localizedDescription)") }}

Observe: após obter o dicionário, fazemos a conversão explícita de cada elemento para o tipo desejado. Isso pode ser inconveniente quando há muitos campos.



Trabalhando com arrays em JSON

Frequentemente, o JSON contém arrays de objetos. Vamos analisar um exemplo com um array de usuários:

let jsonArrayString = """[  {"nome": "Ana", "idade": 22},  {"nome": "Pedro", "idade": 28}]"""

if let data = jsonArrayString.data(using: .utf8) { do { if let usuarios = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] { for usuario in usuarios { let nome = usuario["nome"] as? String ?? "" let idade = usuario["idade"] as? Int ?? 0 print("\\(nome): \\(idade) anos") } } } catch { print("Erro: \\(error)") }}

O método JSONSerialization é simples, mas requer muita conversão manual de tipos. Para projetos modernos, a Apple recomenda o uso de Codable.



Blogs

Book Recommendations