SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
16.11.2024

Aula 49: Analisando JSON com Protocolos Codable

Nesta aula, vamos explorar como analisar dados JSON em Swift usando o protocolo Codable. Este recurso poderoso no Swift nos permite converter dados JSON de forma fluida em tipos Swift e vice-versa.

Entendendo o Codable

O protocolo Codable é um alias de tipo para os protocolos Encodable e Decodable. Ao se conformar ao Codable, um tipo pode ser codificado e decodificado a partir de uma representação externa, como o JSON.

Aqui está um resumo:

  • Encodable: Um tipo que pode se codificar para uma representação externa.
  • Decodable: Um tipo que pode se inicializar a partir de uma representação externa.

Cenário Exemplo

Vamos considerar uma resposta JSON simples representando uma lista de usuários. Aqui está o JSON com o qual iremos trabalhar:

[
    {
        "id": 1,
        "name": "João da Silva",
        "email": "joao.silva@exemplo.com"
    },
    {
        "id": 2,
        "name": "Maria Oliveira",
        "email": "maria.oliveira@exemplo.com"
    }
]

Passo 1: Definir o Modelo de Usuário

Primeiro, criamos uma struct que se conforma ao protocolo Codable.

import Foundation

struct Usuario: Codable {
    let id: Int
    let nome: String
    let email: String
}

Passo 2: Analisar Dados JSON

Agora, vamos escrever uma função para analisar os dados JSON em um array de objetos Usuario.

func analisarJSON(dados: Data) {
    let decodificador = JSONDecoder()

    do {
        let usuarios = try decodificador.decode([Usuario].self, from: dados)
        for usuario in usuarios {
            print("ID: \(usuario.id), Nome: \(usuario.nome), Email: \(usuario.email)")
        }
    } catch {
        print("Erro ao decodificar JSON: \(error)")
    }
}

Passo 3: Exemplo de Uso

A seguir, vamos simular a recepção de dados JSON e analisá-los usando nossa função analisarJSON.

let jsonString = """
[
    {
        "id": 1,
        "name": "João da Silva",
        "email": "joao.silva@exemplo.com"
    },
    {
        "id": 2,
        "name": "Maria Oliveira",
        "email": "maria.oliveira@exemplo.com"
    }
]
"""

if let jsonData = jsonString.data(using: .utf8) {
    analisarJSON(dados: jsonData)
}

Passo 4: Codificando em JSON

Além de decodificar JSON, você também pode codificar tipos Swift de volta para JSON. Vamos ver como codificar nossa struct Usuario.

func codificarParaJSON(usuarios: [Usuario]) {
    let codificador = JSONEncoder()

    do {
        let jsonData = try codificador.encode(usuarios)
        if let jsonString = String(data: jsonData, encoding: .utf8) {
            print("String JSON: \(jsonString)")
        }
    } catch {
        print("Erro ao codificar para JSON: \(error)")
    }
}

Passo 5: Exemplo de Uso para Codificação

Vamos criar algumas instâncias de Usuario e codificá-las para JSON.

let usuarios = [
    Usuario(id: 1, nome: "João da Silva", email: "joao.silva@exemplo.com"),
    Usuario(id: 2, nome: "Maria Oliveira", email: "maria.oliveira@exemplo.com")
]

codificarParaJSON(usuarios: usuarios)

Resumo

Nesta aula, abordamos como usar o protocolo Codable em Swift para analisar JSON de uma API e converter structs Swift para JSON. Esse recurso embutido simplifica o processo de trabalhar com JSON, tornando-o mais fácil e eficiente para os desenvolvedores.

Ao entender como utilizar o Codable, você pode gerenciar efetivamente a troca de dados entre suas aplicações e fontes de dados externas. Esta será uma habilidade fundamental à medida que você constrói aplicações mais complexas que exigem manipulação de dados a partir de APIs. Boas codificações!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!