Используйте Codable
для анализа JSON-ответа .
Модели:
struct Root: Codable {
var results: [SearchResult]
var status: String
}
struct SearchResult: Codable {
var id: String
var icon: String
var name: String
var placeId: String
var reference: String
var types: [String]
var vicinity: String
var geometry: Geometry
var photos: [Photo]
var openingHours: [String:Bool]?
}
struct Geometry: Codable {
var location: Location
}
struct Location: Codable {
var lat: Double
var lng: Double
}
struct Photo: Codable {
var height: Double
var width: Double
var photoReference: String
}
ВМодели выше, добавьте keys
согласно вашему требованию.Также любой из вышеперечисленных keys
не уверен в API, пометьте их как optional
.
Синтаксический анализ:
Синтаксически data
ваш полученный вURLSession.shared.dataTask
like,
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let root = try decoder.decode(Root.self, from: data)
print(root)
} catch {
print(error)
}
Использование:
Для примера ответа JSON по указанной вами ссылке вы можете получить доступ к свойствам вашего ответа, используя root
вроде
root.status //OK
root.results.first?.name //Rhythmboat Cruises
root.results.first?.geometry.location.lat //-33.870775
Подробнее о Codable
и о том, как оно работает здесь .