#json #swift
#json #swift
Вопрос:
У меня есть API, который возвращает JSON, структурированный аналогично приведенному ниже. В целях простоты я удалил все родственные словари в JSON, чтобы мы могли сосредоточиться на основной цели анализа одного свойства. Кажется, я не могу понять, почему он не будет анализироваться.
API JSON:
{
"players": {
"uniqueUUIDwouldGoHere": {
"ace": {
"operatorpvp_kills": 11
}
}
}
}
Мои структуры Swift написаны следующим образом:
public struct opsResponse: Decodable {
var players : [String: opsInner]
enum CodingKeys: String, CodingKey {
case players = "players"
}
}
public struct opsInner: Decodable {
var ace : [String: ace]
enum CodingKeys: String, CodingKey {
case ace = "ace"
}
}
public struct ace: Decodable {
var operatorpvp_kills : Int = 0
enum CodingKeys: String, CodingKey {
case operatorpvp_kills = "operatorpvp_kills"
}
}
И, наконец, часть декодера URLSession:
let decoder = JSONDecoder()
let json = try decoder.decode(opsResponse.self, from: data)
Сообщение об ошибке от catch
:
typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "players", intValue: nil), _JSONKey(stringValue: "uniqueUUIDwouldGoHere", intValue: nil), CodingKeys(stringValue: "ace", intValue: nil), _JSONKey(stringValue: "operatorpvp_kills", intValue: nil)], debugDescription: "Expected to decode Dictionary<String, Any> but found a number instead.", underlyingError: nil))
Ответ №1:
Обновить:
Я изменил: var ace : [String: ace]
на var ace : ace