如何从 API 访问嵌套字典

问题描述 投票:0回答:2

假设我想从 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

但是编译器会弹出下标错误。

我应该使用什么样的数据模型来访问它?

ios swift
2个回答
1
投票

您的

JSON
响应是
Array
不是
Dictionary
并且
active_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
}

1
投票

试试这个

 let mainDict = arrResponse[0] as! [String : Any]
 let projectDict = mainDict["project"] as! [String : Any]
 let strProjectID = projectDict["id"] as! Int
© www.soinside.com 2019 - 2024. All rights reserved.