Кодируется для ответа json с ошибкой при разборе - PullRequest
0 голосов
/ 07 августа 2020

После создания codable появляется ошибка.

"msg": {
        "success": [
            "Successfully logged in."
        ]
    },
    "messages": []
}

// Построен codable для данных ответа синтаксического анализа

    struct Msg:Codable{
   let success: [String]?
    enum CodingKeys: String, CodingKey{
    case success = "succcess"
    }
    init (from decoder: Decoder)throws{
    let value = try decoder.container(keyedBy: CodingKeys.self)
    sucess = try values.decodeIfPresent([String].self, forKey: .success)
    }
   }

Я получил эту ошибку при выполнении codable

Несоответствие типа ошибки (Swift.Dictionary . Swift.DecodingError.Context (codingPath: [CodingKeys (StringValue: «msg», intValue: nil], debugDescription: Ожидается декодирование словаря но вместо этого нашел массив. "lowerError: nil))

Как разрешить эту часть на основе ответа сервера.

1 Ответ

0 голосов
/ 07 августа 2020

Это должно сработать для вас:

struct Msg: Codable {
    let success: [String]?
}

struct Response: Codable {
    let msg: Msg
}

let json = #"""
{
    "msg": {
        "success": [
            "Successfully logged in."
        ]
    },
    "messages": []
}
"""#

if let response = try? JSONDecoder().decode(Response.self, from: json.data(using: .utf8)!) {
    print(response.msg.success?.first) // Optional("Successfully logged in.")
}


...