Задача: Попытка использовать полезную нагрузку JSON, содержащую динамическое имя объекта. Поскольку имена этих объектов не являются последовательными или производными от шаблона, я не могу обходить полезную нагрузку с помощью SwiftyJSON. Образец динамических объектов выглядит следующим образом обозначены жирным шрифтом:SwiftyJSON и динамические именованные объекты
«180А»: { «идентификатор»: «180A», «Этикетка»: «Оушнсайд ворота», «путь»: «Север », "индекс": "1" }, "195C": { "идентификатор": "195C", "этикетка": "Дюна-Бич Ворота", "путь": "Север", "индекс": "2" }, "211F": { "id": "211F", "Этикетка": "Sunset Harbor Gate", "путь": "Север", "Индекс": "3" }
Пример JSON Payload:
{
"Direction": {
"NorthGates": {
"180A": {
"id": "180A",
"label": "Oceanside Gate",
"path": "North",
"index": "1"
},
"195C": {
"id": "195C",
"label": "Dune Beach Gate",
"path": "North",
"index": "2"
},
"211F": {
"id": "211F",
"label": "Sunset Harbor Gate",
"path": "North",
"index": "3"
}
}
}
}
Использование SwiftyJSON Я в состоянии успешно напечатать этикетку известного объекта, например, «180А»:
DataManager.getTopAppsDataFromFileWithSuccess { (data) -> Void in
let json = JSON(data: data)
if let gateLabel = json["Direction"]["NorthGates"]["180A"]["label"].stringValue {
//output: "Oceanside Gate"
println("NSURLSession: \(gateLabel)")
}
}
поскольку динамические имена объектов не являются статичными, я не могу использовать предопределенные имена объектов в коде выше найдите значение метки. Последующие попытки вернуть нулевые значения:
//stringValue = nil
if let gateLabel = json["Direction"]["NorthGates"][0].stringValue {
println("NSURLSession: \(gateLabel)")
}
//stringValue = nil
if let gateLabel = json["Direction"]["NorthGates"][0]["label"].stringValue {
println("NSURLSession: \(gateLabel)")
}