【发布时间】:2019-06-19 14:07:24
【问题描述】:
以下是用于解析 JSON api 的代码。该代码有效,我能够将所有 JSON 值解析到下面的结构中,但我想知道如何仅解析第一个块(?)/数组并将它们存储在结构中,以便我可以对它们执行操作。
let jsonUrlString = "https://www.alphavantage.co/query?function=FX_INTRADAY&from_symbol=EUR&to_symbol=USD&interval=5min&apikey=demo"
let urlObj = URL(string: jsonUrlString)
URLSession.shared.dataTask(with: urlObj!) {(data, response, error) in
guard let data = data else { return }
do {
let forex = try JSONDecoder().decode(Root.self, from: data)
print(forex.timeSeriesFX5Min)
} catch {
print(error)
}
}.resume()
}
}
struct Root: Codable {
let timeSeriesFX5Min: [String:Forex]
enum CodingKeys: String, CodingKey {
case timeSeriesFX5Min = "Time Series FX (5min)"
}
}
// MARK: - TimeSeriesFX5Min
struct Forex: Codable {
let the1Open, the2High, the3Low, the4Close: String
enum CodingKeys: String, CodingKey {
case the1Open = "1. open"
case the2High = "2. high"
case the3Low = "3. low"
case the4Close = "4. close"
}
}
【问题讨论】:
-
first block是什么意思? -
当你通过 url 打开 JSON api 时,你会得到一个值列表: "Time Series FX (5min)": { "2019-06-19 14:35:00": { "1 . open": "1.1213", "2. high": "1.1213", "3. low": "1.1210", "4. close": "1.1212" },我试图捕获第一组值而不是所有这些,然后存储第一个值块,以便它们可以用于执行操作。