Прочитайте ваше сообщение об ошибке.
Это потому, что ваш JSON выглядит так:
{
"status": "ok",
"totalResults": 5576,
"articles": [
{
"source": {
"id": null,
"name": "Newsbtc.com"
},
"author": "Davit Babayan",
"title": "US Senators Coercing Libra Partners is Un-American: Coinbase CEO",
"description": "Facebook’s plan to launch Libra came under further pressure after its partners Visa, Mastercard, Paypal, and Stripe announced that they were leaving the digital currency project. And as it turned out, there was some political pushing involved. Senator Brian S…",
"url": "https://www.newsbtc.com/2019/10/14/us-senators-coercing-libra-partners-is-un-american-coinbase-ceo/",
"urlToImage": "https://www.newsbtc.com/wp-content/uploads/2019/10/shutterstock_1492511210-1200x780.jpg",
"publishedAt": "2019-10-14T15:05:53Z",
"content": "Facebook’s plan to launch Libra came under further pressure after its partners Visa, Mastercard, Paypal, and Stripe announced that they were leaving the digital currency project. And as it turned out, there was some political pushing involved.\r\nSenator Brian … [+2871 chars]"
},
И вы говорите декодеру проанализировать массив объектов, вложенных в другой объект json,Создайте «корневой» объект, содержащий ваш массив, и передайте его в jsondecoder.
struct NewsResponse: Decodable {
let articles: [Course]
}
Также, глядя на ответ, вы получите следующую ошибку, потому что в этих ответах нет «id» в этих ответах. корень каждого объекта. Сделайте его необязательным и / или добавьте вложенный объект для «исходного» объекта, который в конечном итоге содержит идентификатор, и сделайте его строкой.