Вероятно, самым простым является преобразование вашего объекта (ей) в словари или массивы (в зависимости от того, что вам нужно).
Сначала вы должны иметь возможность преобразовать Userscore
в словарь. Я буду использовать расширение для него, поскольку я понятия не имею, как выглядит ваша сущность:
extension Userscore {
func toDictionary() -> [String: Any]? {
guard let id = id else { return nil }
guard let name = name else { return nil }
return [
"id": id,
"name": name
]
}
}
Теперь этот метод можно использовать для создания массива ваших словарей, просто используя let arrayOfUserscores: [[String: Any]] = userscores.compactMap { $0.toDictionary() }
.
* 1009. * Или создать целое JSON, как указано в вопросе:
func generateUserscoreJSON(userscores: [Userscore]) -> Data? {
var payload: [String: Any] = [String: Any]()
payload["status"] = true
payload["data"] = userscores.compactMap { $0.toDictionary() }
return try? JSONSerialization.data(withJSONObject: payload, options: .prettyPrinted)
}
Теперь будут созданы необработанные данные, готовые для отправки на сервер, например
var request = URLRequest(url: myURL)
request.httpBody = generateUserscoreJSON(userscores: userscores)