Это очень необычный формат ответа, из вывода в комментарии это неопределенный массив ([Any]
), содержащий одну строку JSON, например:
let json = """
{"emisor":105,"receptor":54,"receptor_token":"6b6295e0b0601146e56ff4a9caec287f0ecc0f385fcfcd758dccd00c6385c558eefc6d6fbe98e977","texto":"Blanca bla","updated_at":"2019-06-21 10:48:22","created_at":"2019-06-21 10:48:22","id":10074,"time":"10:48:22"}
"""
let data : [Any] = [json]
Прежде всего для удобства объявитеstruct
struct Response: Decodable {
let emisor, receptor, id: Int
let receptorToken, texto, updatedAt, createdAt, time: String
}
Чтобы проанализировать JSON-проверку, если data
является массивом, и если в массиве есть одна строка, преобразуйте его в Data
и декодируйте его с Decodable
* 1012.*
socket.on("privateMessage") {data, ack in
if let response = data as? [Any], let jsonString = response.first as? String {
let jsonData = Data(jsonString.utf8)
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let result = try decoder.decode(Response.self, from: jsonData)
print(result)
} catch {
print(error)
}
}
}