Codable:预期解码 Array<Any> 但发现了字典

Codable: Expected to decode Array<Any> but found a dictionary instead

我是 Codable 的新手,今天一直在玩它。

我目前的 JSON 模型是这样的:

{
    "status": 200,
    "code": 200,
    "message": {
        "1dHZga0QV5ctO6yhHUhy": {
            "id": "23",
            "university_location": "Washington_DC",
            "docID": "1dHZga0QV5ctO6yhHUhy"
        },
        "0dbCMP7TrTEnpRbEleps": {
            "id": "22",
            "university_location": "Timber Trails, Nevada",
            "docID": "0dbCMP7TrTEnpRbEleps"
        }
    }
}

但是,尝试用以下方法解码此响应:

    struct USA: Codable
{
    //String, URL, Bool and Date conform to Codable.
    var status: Int
    var code: Int

    // Message Data
    var message: Array<String>

}

给出:

Expected to decode Array but found a dictionary instead.

message 更新为 Dictionary<String,String 会产生:

typeMismatch(Swift.String, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "message", intValue: nil), _JSONKey(stringValue: "1dHZga0QV5ctO6yhHUhy", intValue: nil)], debugDescription: "Expected to decode String but found a dictionary instead.", underlyingError: nil))

message 键是字典而不是数组

struct Root: Codable {
    let status, code: Int
    let message: [String: Message]
} 
struct Message: Codable {
    let id, universityLocation, docID: String

} 

do { 
    let dec = JSONDecoder()
    dec.keyDecodingStrategy = .convertFromSnakeCase
    let res = try dec.decode(Root.self, from: data) 
}
catch{
    print(error)
}