Этот код анализирует URL-адрес в формате json для создания типичной ленты новостей. - PullRequest
0 голосов
/ 01 апреля 2020

Я получил это из учебника по Xcode codingwithchris.com, который довольно хорош. Я попытался заменить URL моего xml -форматированного URL-адреса вместо URL-адреса Chrisap json newsapi.org. Как и ожидалось, я получил "Ошибка разбора json". Благодарен за любые быстрые советы.

let stringUrl = "https://newsapi.org/v2/top-headlines?country=us&category=business&apiKey=8c4d5faa662f4dce849d17d89e86ca14"
let url = URL(string: stringUrl)
guard url != nil else {
    print("Couldn't create url object")
    return
}
let session = URLSession.shared
let dataTask = session.dataTask(with: url!) { (data, response, error) in
  if error == nil && data != nil {
      let decoder = JSONDecoder()
      do {
          let articleService = try decoder.decode(ArticleService.self, from: data!)
          if articleService.articles == nil {
              return
          }
          let articles = articleService.articles!
          DispatchQueue.main.async {
              self.delegate?.articlesRetrieved(articles)
           } // end DispatchQueue.main.sync
       } end do
       catch {
           print("Error parsing the json")
       } // End catch

  } // End if

} // End dataTask

dataTask.resume()

1 Ответ

1 голос
/ 01 апреля 2020

Скорее всего, вы используете неправильную структуру для декодирования json. Вот что вам нужно.

struct Response: Codable {
    let status: String
    let totalResults: Int
    let articles: [Article]
}

struct Article: Codable {
    let source: Source
    let author: String?
    let title, description, url, urlToImage: String
    let publishedAt: String
    let content: String?
}

struct Source: Codable {
    let id: String?
    let name: String
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...