0Pricing
Swift Academy · Lección

Codificación con JSONEncoder

Genere datos JSON a partir de valores de Swift.

Codificación con JSONEncoder es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Creación de un JSONEncoder

JSONEncoder es la herramienta principal que convierte cualquier valor Encodable en Data JSON. Cree uno y, después, llame a encode(_:) sobre su valor.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let encoder = JSONEncoder()
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(data.count, "bytes")

De Data a un String legible

encode(_:) devuelve Data binarios. Para leerlos, decodifique los bytes como UTF-8 con String(data:encoding:).

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let data = try JSONEncoder().encode(Movie(title: "Up", year: 2009))
let text = String(data: data, encoding: .utf8)!
print(text)

Salida con formato legible

De forma predeterminada, JSON es compacto. Establezca outputFormatting = .prettyPrinted para añadir sangría y saltos de línea, de modo que el resultado sea fácil de leer para las personas.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(String(data: data, encoding: .utf8)!)

Claves ordenadas para una salida estable

Combine las opciones en un array. Añadir .sortedKeys ordena las claves alfabéticamente, lo que hace que la salida sea determinista y resulta ideal para pruebas y snapshots.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
    var rating: Double
}

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(Movie(title: "Up", year: 2009, rating: 4.8))
print(String(data: data, encoding: .utf8)!)

Codificación de arrays

Puede codificar colecciones directamente. Un array de valores Encodable se convierte en un array JSON.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let list = [Movie(title: "Up", year: 2009),
            Movie(title: "Coco", year: 2017)]
let data = try JSONEncoder().encode(list)
print(String(data: data, encoding: .utf8)!)

Codificación de diccionarios

Un diccionario [String: Encodable-element] se codifica como un objeto JSON. Tenga en cuenta que el orden de las claves no está garantizado a menos que añada .sortedKeys.

import Foundation

let scores: [String: Int] = ["alice": 90, "bob": 75]
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let data = try encoder.encode(scores)
print(String(data: data, encoding: .utf8)!)

Codificación de estructuras anidadas

Los tipos Codable anidados se codifican de forma recursiva, lo que produce automáticamente objetos JSON anidados.

import Foundation

struct Author: Codable { var name: String }
struct Post: Codable {
    var title: String
    var author: Author
}

let p = Post(title: "Hello", author: Author(name: "Mae"))
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
print(String(data: try encoder.encode(p), encoding: .utf8)!)

Reutilización de un encoder

Puede reutilizar un JSONEncoder configurado para muchos valores. Configúrelo una vez y siga aplicando el mismo formato en todo el código.

import Foundation

struct Tag: Codable { var name: String }

let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
for t in [Tag(name: "swift"), Tag(name: "json")] {
    let data = try encoder.encode(t)
    print(String(data: data, encoding: .utf8)!)
}

Codificación de números y booleanos

Las propiedades numéricas y booleanas se codifican como literales JSON, sin comillas. Los strings llevan comillas; Int, Double y Bool no.

import Foundation

struct Stats: Codable {
    var count: Int
    var ratio: Double
    var enabled: Bool
}

let data = try JSONEncoder().encode(Stats(count: 3, ratio: 0.75, enabled: true))
print(String(data: data, encoding: .utf8)!)

Codificación de optionals

De forma predeterminada, un optional nil se omite por completo del JSON. Un optional que no es nil se codifica como el valor que contiene.

import Foundation

struct Item: Codable {
    var name: String
    var note: String?
}

let data = try JSONEncoder().encode(Item(name: "Pen", note: nil))
print(String(data: data, encoding: .utf8)!)

Unificación del proceso

Un flujo de codificación habitual consiste en crear el valor, configurar el encoder, llamar a encode y convertir después los Data en un String para registrarlos o transportarlos.

import Foundation

struct Order: Codable {
    var id: Int
    var items: [String]
}

let order = Order(id: 42, items: ["a", "b"])
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(order)
print(String(data: data, encoding: .utf8)!)

Comprobación rápida: JSONEncoder

Compruebe sus conocimientos sobre codificación.

Resumen: codificación con JSONEncoder

Ha aprendido a convertir valores de Swift en JSON:

  • encode(_:) devuelve Data; conviértalos con String(data:encoding:).
  • outputFormatting, junto con .prettyPrinted y .sortedKeys, controla el formato.
  • Los arrays, diccionarios, tipos anidados, números, booleanos y optionals se codifican de forma adecuada.
  • Puede reutilizar un encoder configurado con muchos valores.

Preguntas frecuentes

¿La lección «Codificación con JSONEncoder» es gratis?

Sí — el texto completo de «Codificación con JSONEncoder» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Codificación con JSONEncoder»?

Genere datos JSON a partir de valores de Swift. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Codificación con JSONEncoder»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conformidad con Codable
  2. Codificación con JSONEncoder
  3. Decodificación con JSONDecoder
  4. Gestión de tipos opcionales y anidados
← Volver a Swift Academy