json - 如何遍历结构?

标签 json swift struct

我正在从 coinDesk API 获取数据以获取与其他货币相关的比特币汇率,我创建了 3 个结构来保存此数据,但无法遍历该结构以了解我在那里有多少项目。 .

这是我的结构:

struct Response: Codable {
    var bpi: currencies
}

struct currencies: Codable {
    var USD: info
    var GBP: info
    var EUR: info
}

struct info: Codable {
    var code: String
    var symbol: String
    var description: String
    var rate_float: Float
}

要从我刚刚使用的 API 保存数据:

let jsonData = try JSONDecoder().decode(Response.self, from: data)

它保存数据时没有错误,但是,当我尝试循环遍历此数据以填充 tableViewCells 时,它不起作用。

我知道的是...

let euro = jsonData.bpi.EUR
let dollar = jsonData.bpi.USD
let gbp = jsonData.bpi.GBP

let infos = [euro,dollar,gbp]

completion(infos)

这是将数据发送到我的 UITableView 并进行填充,但是如果我有 500 种货币呢?它根本不实用..我怎样才能以更有效的方式做到这一点?

预先感谢您的回答。

最佳答案

不要放 key

struct Response: Codable {
  let bpi: [String:Info]
}

struct Info: Codable {
  let code: String
  let symbol: String
  let description: String
  let rate_float: Float
}

然后

let jsonData = try JSONDecoder().decode(Response.self, from: data)
print(jsonData.bpi["USD"])

所以对于所有的键

let keys = Array(jsonData.bpi.keys)
let values = Array(jsonData.bpi.values)

关于json - 如何遍历结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450629/

相关文章:

swift - 如何在 Swift 中使用位操作?

ios - 使用 Apple 按钮登录 Apple 标志显得很小

c++ - 如何使用动态大小的结构数组?

c - 溢出?找不到来源,奇怪

python - 将 pandas 数据帧导出到 JSON 时如何解决 OverflowError

json - Jersey Rest Client 是否比 HttpClient 更适合调用 Restful 服务?

ios - 在 Swift 中,如何在从 App Extension 目标运行时忽略部分代码?

objective-c - 如何从 ARC 下运行时定义的类方法返回结构值?

python - 在 Python 中将对象保存到 JSON 或 XML 文件中

python - 如何使用 Python 进行基本的 REST Post 请求?