Мне приходит вот такое из сервера
{
id = "a5q25-a2a1a5";
jsonrpc = "2.0";
result = {
data = {
coins = 545;
freePokes = 0;
};
id = "<null>";
success = 1;
};
}
Мне нужно это распарсить coins и success
Мне необходимо использовать Decodable
Вот моя модель:
struct BaseResultData: Decodable {
let coins: Int
let success: Bool
enum CodingKeys: String, CodingKey {
case coins
case success
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
coins = try values.decode(Int.self, forKey: .coins)
success = try values.decode(Bool.self, forKey: .success)
}
}
примерно вот так я это делаю:
guard let dict = result as? [String : Any],
let data = dict["data"]
else {
completionHandler(.failure(.parsError))
return
}
// get coins, success
guard let dataCoins = data as? [String : Any],
let coins = dataCoins["coins"],
let success = dict["success"]
else {
completionHandler(.failure(.parsError))
return
}
let dictResult = ["coins" : coins, "success" : success]
let strJsonData = dictResult.json
print("strJsonData = \(strJsonData)")
let jsonData = strJsonData.data(using: .utf8)!
completionHandler(.success(jsonData))
Забираю значения по ключу и формирую новый валидный json и отправляю его в модель, получается такое:
{
"coins" : 545,
"success" : true
}
Не могу распарсить, подскажите что я делаю не правильно