我使用Swift在iOS上工作。我正在使用的服务返回以下JSON(节点开始重复时切断):
{
"Ambler Departures: April 15, 2015, 2:57 pm": [
{
"Northbound": [
{
"direction": "N",
"path": "R5N",
"train_id": "564",
"origin": "Frazer Yard",
"destination": "Colmar-Link Belt",
"status": "On Time",
"service_type": "LOCAL",
"next_station": "North Broad St",
"sched_time": "Apr 15 2015 03:27:00:000PM",
"depart_time": "Apr 15 2015 03:27:00:000PM",
"track": "2",
"track_change": null,
"platform": " ",
"platform_change": null
},
{
"direction": "N",
"path": "R5N",
"train_id": "6566",
"origin": null,
请注意,根节点是由服务动态创建的 - 我没有办法知道它将是什么,因为用户可以选择从五十个站中的一个离开,时间基于时间在服务器上,这可能与用户时钟的时间不一致。
我想从北向数据中提取数据,然后在JSON中提取较低的南向数据。
我从服务中获取数据但我无法正确解析。我无法通过根节点(动态节点)进入内部结构。
这是我正在尝试的内容:
let json = JSON(data:data)
var x = 0
while x < json.count
{
let track = json[0]["Northbound"][x]["track"].string
println(track)
x++
}
这导致&#34; nil&#34;。我被卡住了......
我知道json [0]可能是错误的,因为JSON的级别不是数组。提前致谢
答案 0 :(得分:3)
如果json
是来自SwiftyJSON的JSON对象,但您知道它是带有未知密钥的字典,您可以通过以下方式找到此密钥:
let theKey = json.dictionary!.keys.first
然后访问数组:
let theArray = json[theKey] as! [[String:AnyObject]] // array of dictionaries
然后theArray[0]
将是带有“Northbound”作为键的字典,其中包含一个包含信息的字典数组。
(编辑以反映特定于SwiftyJSON的正确答案。)