Ronald Aja Ronald Aja - 1 month ago 9
Swift Question

How to parse JSON data out of dictionary embed inside an array embed inside a dictionary

I am trying to parse JSON data in a form of

Dictionary
. However, the dictionary is put together as an Array as a value from another Dictionary. To make things worst, the only key given from the API is for the third level value (which is the array of dictionaries). Any idea how to obtain the data inside the first level dictionary?

Code attempted:

if let valueTripleDictionary = jsonDataDictiony["value"] as? [String : AnyObject]
{

if let valueDoubleDictionary = valueTripleDictionary as? [String : AnyObject]
{

if let valueDictionary = valueDoubleDictionary as? [String : AnyObject]
{

self.busStopCode = valueDictionary["BusStopCode"] as? String
self.roadName = valueDictionary["RoadName"] as? String
self.busStopDescription = valueDictionary["Description"] as? String
self.busStopLatitude = valueDictionary["Latitude"] as? Double
self.busStopLongitude = valueDictionary["Longitude"] as? Double


print(busStopCode)
print(roadName)
print(busStopDescription)
print(busStopLatitude)
print(busStopLongitude)

}

}

}


This is a piece of the JSON data

["value": <__NSArrayI 0x7fe884d24f00>(
{
BusStopCode = 01012;
Description = "Hotel Grand Pacific";
Latitude = "1.29684825487647";
Longitude = "103.8525359165401";
RoadName = "Victoria St";
},
{
BusStopCode = 01013;
Description = "St. Joseph's Ch";
Latitude = "1.29770970610083";
Longitude = "103.8532247463225";
RoadName = "Victoria St";
}
)
]

Answer

value key contains Array not Dictionary, so you need to write [[String : AnyObject]] instead of [String : AnyObject].

if let array = jsonDataDictiony["value"] as? [[String : AnyObject]] {
     for dic in array {
          print(dic["BusStopCode"]) //Access other values same way
     }
}
Comments