簡體   English   中英

如何從API訪問嵌套字典

[英]How to access a nested dictionaries from API

假設我想從API像以下格式訪問嵌套字典響應:

(
    {
    "active_upcoming_bookings" =         (
                    {
            "booked_from" = "2018-03-01T00:00:00.000+08:00";
            "booked_to" = "2018-03-23T23:59:59.999+08:00";
            "creator_id" = 1;
            "desk_id" = 75;
            "desk_name" = D2;
            "desk_type" = Standing;
            id = 299;
            "project_id" = 8;
            "project_name" = "expo 2017";
            status = Upcoming;
            "user_id" = 11;
            wing = Right;
        },
                    {
            "booked_from" = "2018-03-01T00:00:00.000+08:00";
            "booked_to" = "2018-03-23T23:59:59.999+08:00";
            "creator_id" = 1;
            "desk_id" = 74;
            "desk_name" = D3;
            "desk_type" = Standing;
            id = 300;
            "project_id" = 8;
            "project_name" = "expo 2017";
            status = Upcoming;
            "user_id" = 12;
            wing = Right;
        },
                    {
            "booked_from" = "2018-03-01T00:00:00.000+08:00";
            "booked_to" = "2018-03-01T23:59:59.999+08:00";
            "creator_id" = 1;
            "desk_id" = 76;
            "desk_name" = D1;
            "desk_type" = Standing;
            id = 298;
            "project_id" = 8;
            "project_name" = "expo 2017";
            status = Upcoming;
            "user_id" = 16;
            wing = Right;
        }
    );
    project =         {
        "created_at" = "2017-05-31T16:29:06.012+08:00";
        "created_by_id" = 1;
        "end_date" = "2018-03-23T23:59:59.999+08:00";
        id = 8;
        name = "expo 2017";
        "start_date" = "2018-03-01T00:00:00.000+08:00";
        "updated_at" = "2017-05-31T16:29:06.012+08:00";
    };
}
)

我訪問嵌套字典的代碼:

let response = responseJSON as! [String: [String: Any]]]()

let projectId = response["project"]?["id"] as Int
let projectName = response["project"]?["name"] as String

但它會在編譯器中彈出下標錯誤。

我應該使用哪種數據模型進行訪問?

您的JSON響應不是Array而是Dictionaryactive_upcoming_bookings數組和project字典在響應數組的第一個字典內。

if let response = responseJSON as? [[String:Any]], let dictionary = response.first, 
    let projectDic = dictionary["project"] as? [String:Any] {

      //Now subscript with projectDic to access id and name
      let projectId = projectDic["id"] as? Int
      let projectName = projectDic["name"] as? String
}

嘗試這個

 let mainDict = arrResponse[0] as! [String : Any]
 let projectDict = mainDict["project"] as! [String : Any]
 let strProjectID = projectDict["id"] as! Int

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM