Рассмотрите возможность реструктуризации ваших данных.Вам необходимо структурировать модель данных так, чтобы она соответствовала структуре данных JSON.Вы можете включить только то, что вы хотите, но вы должны указать каждого родителя или уровень свойства, к которому вы хотите получить доступ.Возьмите следующий пример из API Википедии.Он выводит свойство title, которое находится на трех уровнях глубоко в структуре данных JSON.Он пропускает несколько свойств, как вы можете видеть из примера кода JSON, но включает в себя каждого родителя, который мне нужен для доступа к желаемому свойству (свойствам).
import UIKit
struct Item: Decodable {
var title: String
}
struct Search: Decodable {
var search: [Item]
}
struct Result: Decodable {
var query: Search
}
func getSearchResults(){
let url = URL(string: "https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=swift%204&utf8=&format=json")!
URLSession.shared.dataTask(with: url) { (data, response, error) in
if let urlResponse = response as? HTTPURLResponse, urlResponse.statusCode == 200 {
guard let data = data else { return }
do {
let results = try JSONDecoder().decode(Result.self, from: data)
for item in results.query.search {
print(item.title)
}
} catch let error as NSError {
print("error: \(error)")
}
}
}.resume()
}
getSearchResults()
JSON Пример:
{
"batchcomplete": "",
"continue": {
"sroffset": 10,
"continue": "-||"
},
"query": {
"searchinfo": {
"totalhits": 30349
},
"search": [
{
"ns": 0,
"title": "Swift",
"pageid": 219023,
"size": 13896,
"wordcount": 1496,
"snippet": "The <span class=\"searchmatch\">swifts</span> are a family, Apodidae, of highly aerial birds. They are superficially similar to swallows, but are not closely related to any passerine species",
"timestamp": "2018-12-28T21:29:44Z"
},
{
"ns": 0,
"title": "Swift (programming language)",
"pageid": 42946389,
"size": 49365,
"wordcount": 5244,
"snippet": "2015. <span class=\"searchmatch\">Swift</span> 3.0 was released on September 13, 2016. <span class=\"searchmatch\">Swift</span> <span class=\"searchmatch\">4</span>.0 was released on September 19, 2017. <span class=\"searchmatch\">Swift</span> <span class=\"searchmatch\">4</span>.1 was released on March 29, 2018. <span class=\"searchmatch\">Swift</span> won first",
"timestamp": "2018-12-19T02:52:33Z"
},
{
"ns": 0,
"title": "Taylor Swift",
"pageid": 5422144,
"size": 237225,
"wordcount": 18505,
"snippet": "Taylor Alison <span class=\"searchmatch\">Swift</span> (born December 13, 1989) is an American singer-songwriter. One of the world's leading contemporary recording artists, she is known",
"timestamp": "2018-12-26T21:55:51Z"
},
Это результат печати:
//Swift
//Swift (programming language)
//Taylor Swift