Как сделать JSON из Encodable произвольного класса?

Для создания JSON из объекта произвольного класса в Swift, вам необходимо выполнить несколько шагов.

1. Создайте класс, который будет представлять ваш объект. Главное требование – класс должен соответствовать протоколу Encodable. Если у вас уже есть класс, который вы хотите использовать, убедитесь, что он соответствует этому протоколу, и если нет – реализуйте необходимые методы.

Пример класса:

class Person: Encodable {
    let name: String
    let age: Int
    
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

2. Создайте экземпляр вашего класса:

let person = Person(name: "John", age: 30)

3. Создайте экземпляр JSONEncoder и используйте его для преобразования вашего объекта в JSON:

let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted

do {
    let jsonData = try encoder.encode(person)
    let jsonString = String(data: jsonData, encoding: .utf8)
    print(jsonString ?? "")
} catch {
    print(error.localizedDescription)
}

Данный код создает экземпляр JSONEncoder, а затем использует его для преобразования объекта person в JSON. Мы также указываем outputFormatting равным .prettyPrinted, чтобы получить красиво отформатированный JSON.

4. Выведите результат в консоль или сохраните его в переменную для последующего использования.

Приведенный выше код создаст следующий JSON:

{
    "name" : "John",
    "age" : 30
}

Вы можете настроить кодировщик JSON, добавлять или удалять свойства из вашего класса, а также использовать различные стратегии кодирования, чтобы получить желаемый результат. Используя протокол Encodable и JSONEncoder, вы можете легко создавать JSON из объектов произвольных классов в Swift.