Подготовка данных для post запроса

Для того, что бы передать post запросом данные необходимо их записать таким образом

let body: [String: String] = ["username": "user1", "password": "pass"]
request.httpBody = JSONSerialization(withJSONObject: body, options: [])

Как в переменную body записать поля объекта? Например:

struct User  {
    var username: String?
    var password: String?
    var isActive: Bool?
    var dopData: DopData? // Здесь может быть массив
}

struct DopData {
    var field1: String?
    var field2: String?
}
var example = User(...)

let body: [String: String] = encode(example) // Как реализовать подобное решение?

Ответы (1 шт):

Автор решения: Oleg Soloviev

body это словарь (dictionary), поэтому вы можете просто присвоить значения ключам:

struct User  {
    var username: String
    var password: String
}

let example = User(username: "user", password: "pass")

let body: [String: String] = ["username": example.username, "password": example.password]

do {
    request.httpBody = try JSONSerialization.data(withJSONObject: body, options: .prettyPrinted)
} catch {
    print(error.localizedDescription)
}
→ Ссылка