Я пытаюсь использовать Codable
для анализа данных JSON. Но возникают некоторые проблемы, когда дело доходит до объекта с массивами. Я пытался следовать следующим ответом , но я получаю сообщение об ошибке Type 'Feature' does not conform to protocol 'Encodable'
Данные JSON, которые мне нужны, - это данные о широте и долготе, но я изо всех сил пытаюсь усвоить Codable
. Я также могу добавить, что я пытался схватить id
, и он работал нормально, но когда я пытаюсь пойти глубже, это просто дает мне ошибку.
Любой совет? Я хочу использовать Codable
, а не JSONSerialization
.
Моя структура (пока)
struct Features: Codable {
var features: [Feature]
}
struct Feature: Codable {
var lat: Double
var long: Double
enum CodingKeys: String, CodingKey {
case geometry
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
let geometry = try values.nestedContainer(keyedBy: CodingKeys.self, forKey: .geometry)
var coordinates = try geometry.nestedUnkeyedContainer(forKey: .geometry)
long = try coordinates.decode(Double.self)
lat = try coordinates.decode(Double.self)
}
}
JSON RESPONSE
{
"type":"FeatureCollection",
"totalFeatures":1761,
"features":[
{
"type":"Feature",
"id":"LTFR_P_RORELSEHINDRADE.3179814",
"geometry":{
"type":"LineString",
"coordinates":[
[
17.929374,
59.387507
],
[
17.929364,
59.387493
]
]
},
"geometry_name":"GEOMETRY",
"properties":{
"FID":3179814,
"FEATURE_OBJECT_ID":2406812,
"FEATURE_VERSION_ID":1,
"EXTENT_NO":2,
"VALID_FROM":"2008-10-09T22:00:00Z",
"CITATION":"0180 2008-09122",
"STREET_NAME":"Visbyringen",
"CITY_DISTRICT":"Rinkeby",
"PARKING_DISTRICT":"<Område saknas>",
"ADDRESS":"Visbyringen 4",
"VF_METER":12,
"VF_PLATS_TYP":"Reserverad p-plats rörelsehindrad",
"RDT_URL":"https://rdt.transportstyrelsen.se/rdt/AF06_View.aspx?BeslutsMyndighetKod=0180&BeslutadAr=2008&LopNr=09122"
}
}
]
}
Интересующие данные
"coordinates":[
[
17.929374,
59.387507
],
[
17.929364,
59.387493
]
]