#json #swift #parsing
#json #быстрый #синтаксический анализ
Вопрос:
Я пытаюсь извлечь данные из созданного мной API. Казалось, все шло хорошо, пока я не начал анализировать / декодировать данные.
Это те ошибки, которые появляются:
и это тот код, который у меня есть
import Foundation
struct VaccineManager {
let vaccineURL = "https://coronavirus.data.gov.uk/api/v1/data?filters=areaType=overviewamp;structure={"areaType":"areaType","areaName":"areaName","areaCode":"areaCode","date":"date","newPeopleVaccinatedFirstDoseByPublishDate":"newPeopleVaccinatedFirstDoseByPublishDate","newPeopleVaccinatedSecondDoseByPublishDate":"newPeopleVaccinatedSecondDoseByPublishDate","cumPeopleVaccinatedFirstDoseByPublishDate":"cumPeopleVaccinatedFirstDoseByPublishDate","cumPeopleVaccinatedSecondDoseByPublishDate":"cumPeopleVaccinatedSecondDoseByPublishDate"}amp;format=json"
func performRequest(vaccineURL: String){
if let url = URL(string: vaccineURL) {
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error!)
return
}
if let safeData = data {
parseJASON(vaccineData: safeData)
}
}
task.resume()
}
}
func parseJASON(vaccineData: Data) {
let decoder = JSONDecoder()
do{
let decodedData = try decoder.decode(VaccineData.self, from: vaccineData)
print(decodedData.data[0].date)
} catch {
print(error)
}
}
На случай, если это как-то связано с этим, у меня также есть файл с этим кодом
struct VaccineData: Decodable {
let data: Data
}
struct Data: Decodable {
let newPeopleVaccinatedFirstDoseByPublishDate: Int
}
Застрял на несколько дней, так что спасибо вам за вашу помощь!
Комментарии:
1. Вы переопределили
Data
тип Swift на свой собственный — не делайте этого. Переименуйте вашData
файл во что-нибудь другое или вложите его внутрьVaccineData
, если он используется только там2. Я уверен, что вы на 100% правы, но я не понимаю, что мне нужно делать.
3. Как я уже сказал, переименуйте свой
Data
тип (тот, который указан в нижней части вашего вопроса) во что-то другое.