Я пытаюсь разобрать JSON с курсами валют, содержащими динамические ключи и динамическое количество значений. Выходные данные зависят от входных параметров, таких как базовая валюта и несколько валют для сравнения.
Пример JSON:
{
"USD_AFN": 70.129997,
"USD_AUD": 1.284793,
"USD_BDT": 82.889999,
"USD_BRL": 3.418294,
"USD_KHR": 4004.99952
}
, or:
{
"EUR_CAD": 0.799997
}
Кроме того, я должен иметь возможность изменять базовую валюту и валюты для сравнения, а также изменять количество валют для сравнения. Я уже пробовал это ответ.
Каков оптимальный способ справиться с этим?
Спасибо
Дополнительная информация
Итак, я сделал структуру без инициализатора
struct CurrencyRate: Codable {
var results : [String:Double]
}
и пытаюсь его расшифровать
do { let results = try decoder.decode(CurrencyRate.self, from: dataToDecode) print(results) } catch { print("Error") }
Я все еще получаю сообщение об ошибке.
В конце концов, мне просто нужен массив курсов валют (значений), чтобы заполнить его в табличном представлении.
[String:Double]
) - person vadian   schedule 16.04.2018struct CurrencyRate: Codable { var results : [String:Double] init(results: [String:Double]) { self.results = results }
иlet results = try decoder.decode(CurrencyRate.self, from: dataToDecode)
, но обнаружил ошибку. Возможно, моя структура не подходит для этой ситуации? - person Todd Page   schedule 16.04.2018Codable
- person vadian   schedule 16.04.2018struct CurrencyRate: Codable { var results : [String:Double] }
и пытаюсь ее декодироватьdo { let results = try decoder.decode(CurrencyRate.self, from: dataToDecode) print(results) } catch { print("Error") }
, но все равно получаю ошибку. Что я делаю не так? - person Todd Page   schedule 17.04.2018JSON
отсутствует ключresults
, поэтому он не будет анализироваться. В настоящее время вашJSON
представляет собой простой хэш[String:Double]
, который можно расшифровать даже с помощьюJSONSerializer
. Однако ваш вопрос об оптимальности обнажает (обычный) вопрос: что вы хотите делать (с этим)? - person Patru   schedule 17.04.2018