Я использую протокол Decodable для декодирования некоторого json, но столкнулся с проблемой:
Я получаю ответ, где долгота и широта могут быть как целыми числами (широта = 0), если к элементу не добавлены данные о географическом местоположении, так и строкой (fx. latitude = "25.047880") если есть геоданные. Теперь, когда я декодирую json, я не знаю, как построить свой Struct, так как long и lat не могут быть одновременно String и Int. Поэтому я получаю ошибку декодирования при выборке элементов, где представлены оба случая.
Есть предложения по решению этой проблемы? Я пытался использовать «Любой» в качестве типа данных, но это не соответствует протоколу декодирования
.struct JPhoto: Decodable {
let id: String
let farm: Int
let secret: String
let server: String
let owner: String
let title: String
let latitude: String //Can both be Int and String
let longitude: String //Can both be Int and String
}
Вы должны написать собственный инициализатор для обработки случаев. Прочтите Кодирование и декодирование пользовательских типов