JSONSerialization.jsonObject 对于复杂数组

JSONSerialization.jsonObject for complex array

我正在尝试从 API 中获取数据 return 到对象中。但是我收到错误,因为数组很复杂且类型不同 - 根据请求,它也与 API 不同。

let json = try JSONSerialization.jsonObject(with: data!) as! Dictionary<String, Dictionary<String, String>>

给出的 array/data 是这样的:

[
   'heartbeatStatus' => 'ok',
    'events' => [
       ['id' => '1', 'name' => 'Event'],
       ['id' => '2', 'name' => 'Event 2'],
    ]         
]

有什么简单的方法吗?到目前为止,我在 SO 上看到的问题要么是针对 Swift 的旧版本(这是 Swift 5),要么只是不同。

我得到的错误是这样的(与我的各种尝试不同)

Could not cast value of type '__NSSingleObjectArrayI' (0x1ed250b30) to 'NSDictionary' (0x1ed251378). 2020-04-13 18:52:23.173759+0100 removed app id [1209:472869] Could not cast value of type '__NSSingleObjectArrayI' (0x1ed250b30) to 'NSDictionary' (0x1ed251378).

尝试使用Codable。首先定义一个结构作为你的模型:

struct HeartbeatResponse: Codable { // or whatever

    let heartbeatStatus: String
    let events: [Event]

    struct Event: Codable {

        let id: String
        let name: String

    }

}

然后解码:

do {
    if let data = data {
        let heartbeat = JSONDecoder().decode(HeartbeatResponse.self, data)
        // do stuff with heartbeat
    }
} catch {
    print(error)
}