我想拆分 https://blockchain.info/ticker 中的数据这样每一行都是数组中自己的 String
。
我正在制作一个获取所选货币价格的应用程序。因此,如果有人想要 AUD,那么它将获取数组中的第二个字符串,然后显示最后一个标签中的价格。
我目前只是让它下载 json..
func reloadJson(){
if globalVariables.currencySelected == "" {
globalVariables.currencySelected = globalVariables.currencySelected + "AUD"
}
print(globalVariables.currencySelected)
if let blockchainTickerURL = URL(string: "https://blockchain.info/ticker") {
let request = NSMutableURLRequest(url: blockchainTickerURL)
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
var message = ""
if error != nil {
print("error")
} else {
if let unwrappedData = data {
let dataString = NSString(data: unwrappedData, encoding: String.Encoding.utf8.rawValue)
这只是我目前拥有的内容的复制和粘贴,其格式不完全正确。
谢谢
最佳答案
您应该看看 Swift4 Codable 协议(protocol)。
为符合 Codable 并具有相应属性的货币字典值创建一个结构:
struct Currency: Codable {
let fifteenM: Double
let last: Double
let buy: Double
let sell: Double
let symbol: String
private enum CodingKeys: String, CodingKey {
case fifteenM = "15m", last, buy, sell, symbol
}
}
要解码您的 JSON 数据,您需要使用 JSONDecoder
传递带有自定义值的字典 [String: Currency]
作为要解码的类型:
let url = URL(string: "https://blockchain.info/ticker")!
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data else { return }
do {
let currencies = try JSONDecoder().decode([String: Currency].self, from: data)
if let usd = currencies["USD"] {
print("USD - 15m:", usd.fifteenM)
print("USD - last:", usd.last)
print("USD - buy:", usd.buy)
print("USD - sell:", usd.sell)
print("USD - symbol:", usd.symbol)
}
} catch { print(error) }
}.resume()
这将打印
USD - 15m: 11694.03
USD - last: 11694.03
USD - buy: 11695.01
USD - sell: 11693.04
USD - symbol: $
关于arrays - 如何在 Swift 中使用未知 key 解码 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663713/