2015-08-21 114 views
1

的JSON對象我有一個JSON對象天:斯威夫特:二維陣列處理

days = {"available_hours":{ 
    "Monday" : [ ["5:30 am","11:00 am"] , [「1:00 pm","4:00 pm」], ["4:00 pm」, "9:00 pm"] ] 
    "Tuesday" : [ [「2:30 pm","7:50 pm"] ] 
    "Friday" : [ [「7:30 am","12:50 pm"], [「4:00 pm","11:59 pm」] ] 
} 

,我想用每一天,可利用小時爲一個字符串列表。

["Monday 5:30 am - 11:00 am, 1:00 pm - 4:00 pm, 4:00 pm - 9:00 pm」, "Tuesday 2:30 pm","7:50 pm",etc ] 

我使用此函數來進動的數據和我傳遞每天JSON對象:

private func hoursList(shifts: [[String]]) -> String{ 
    var shiftslist: [String] = [] 
    var shifttext: String = "" 
    for shift in shifts { 
     shifttext += "\(shifts[0]) - \(shift[1])" 
     shiftslist.append(shifttext) 
    } 
    return join(", ", shiftslist) 
} 

問題是,我不能傳遞任何一天,因爲它不能轉換到[[字符串] ]

+0

你的json無效。我在這裏檢查過.http://jsonlint.com/ –

+0

你是對的,有幾個失蹤(,)。但通常結構是正確的 –

回答

1

這爲我工作:

// Int from JSON 
func getIntFromJSON(data: NSDictionary, key: String) -> Int { 

    let info : AnyObject? = data[key] 

    if let info = data[key] as? Int { 
     return info 
    } 

    else { 
     return 0 

    } 

} 

// Array from JSON 
func getArrayFromJSON(data: NSDictionary, key: String) -> NSArray { 

    let info : AnyObject? = data[key] 

    if let info = data[key] as? NSArray { 
     return info 
    } 

    else { 
     return [] 

    } 

} 
//Object from JSON 
func getObjectFromJSON(data: NSDictionary, key: String) -> AnyObject { 

    let info : AnyObject? = data[key] 

    if let info: AnyObject = data[key] { 
     return info 
    } 

    else { 
     return [] 

    } 

} 
// String from JSON 
func getStringFromJSON(data: NSDictionary, key: String) -> String { 

    let info : AnyObject? = data[key] 
    println(data[key]) 
    if let info = data[key] as? String { 
     return info 
    } 

    return "" 
} 

你必須通過調用函數你JSON與關鍵。

var available_hours = self.getArrayFromJSON(JSONString as! NSDictionary, key: "available_hours") 

    // Passing available_hours to get the values for sub-array 
    var Tuesday = self.getStringFromJSON(available_hours as! NSDictionary, key: "Tuesday")