访问 Swift 中解码的 JSON 字典项的语法
Syntax to access decoded JSON dictionary items in Swift
我正在尝试解码一些 JSON,但正在为如何访问 JSON 中的项目而苦苦挣扎。
JSON 看起来像这样并且 JSONlint 确认它是有效的 json
{
"USD" : {"15m" : 9161.16, "last" : 9161.16, "buy" : 9161.16, "sell" : 9161.16, "symbol" : "$"},
"EUR" : {"15m" : 8175.89, "last" : 8175.89, "buy" : 8175.89, "sell" : 8175.89, "symbol" : "€"},
"JPY" : {"15m" : 985609.11, "last" : 985609.11, "buy" : 985609.11, "sell" : 985609.11, "symbol" : "¥"}
}
app.quicktype.io 建议使用此结构进行解码,但没有货币变量:
struct BitcoinQuoteReturned: Codable {
let the15M, last, buy, sell: Double
let symbol: String
enum CodingKeys: String, CodingKey {
case the15M = "15m"
case last, buy, sell, symbol
}
}
无效代码:
let myquote = try? JSONDecoder().decode(BitcoinQuoteReturned.self, from: data)
if let aquote = myquote {
let usdquote = aquote.USD//ERROR
}
当我尝试在 Swift 中解码时,我不知道如何访问特定货币。 aquote.USD 给出 class 没有成员错误,而 aquote["USD"] 和 aquote[1] 给出没有下标成员错误。如何访问 JSON 中的美元行?
感谢您的任何建议。
解析时使用[String:BitcoinQuoteReturned].self
代替BitcoinQuoteReturned
,即
let myquote = try? JSONDecoder().decode([String:BitcoinQuoteReturned].self, from: data) //here...
if let aquote = myquote {
let usdquote = aquote["USD"]
print(usdquote)
}
注意:调用decode(_:from:)
时使用do-catch
语句,在catch
语句中打印整个error
。这将在解析时为您详细说明问题存在的位置。
do {
let myquote = try JSONDecoder().decode([String:BitcoinQuoteReturned].self, from: data)
let usdquote = myquote["USD"]
print(usdquote)
} catch {
print(error)
}
我正在尝试解码一些 JSON,但正在为如何访问 JSON 中的项目而苦苦挣扎。
JSON 看起来像这样并且 JSONlint 确认它是有效的 json
{
"USD" : {"15m" : 9161.16, "last" : 9161.16, "buy" : 9161.16, "sell" : 9161.16, "symbol" : "$"},
"EUR" : {"15m" : 8175.89, "last" : 8175.89, "buy" : 8175.89, "sell" : 8175.89, "symbol" : "€"},
"JPY" : {"15m" : 985609.11, "last" : 985609.11, "buy" : 985609.11, "sell" : 985609.11, "symbol" : "¥"}
}
app.quicktype.io 建议使用此结构进行解码,但没有货币变量:
struct BitcoinQuoteReturned: Codable {
let the15M, last, buy, sell: Double
let symbol: String
enum CodingKeys: String, CodingKey {
case the15M = "15m"
case last, buy, sell, symbol
}
}
无效代码:
let myquote = try? JSONDecoder().decode(BitcoinQuoteReturned.self, from: data)
if let aquote = myquote {
let usdquote = aquote.USD//ERROR
}
当我尝试在 Swift 中解码时,我不知道如何访问特定货币。 aquote.USD 给出 class 没有成员错误,而 aquote["USD"] 和 aquote[1] 给出没有下标成员错误。如何访问 JSON 中的美元行?
感谢您的任何建议。
解析时使用[String:BitcoinQuoteReturned].self
代替BitcoinQuoteReturned
,即
let myquote = try? JSONDecoder().decode([String:BitcoinQuoteReturned].self, from: data) //here...
if let aquote = myquote {
let usdquote = aquote["USD"]
print(usdquote)
}
注意:调用decode(_:from:)
时使用do-catch
语句,在catch
语句中打印整个error
。这将在解析时为您详细说明问题存在的位置。
do {
let myquote = try JSONDecoder().decode([String:BitcoinQuoteReturned].self, from: data)
let usdquote = myquote["USD"]
print(usdquote)
} catch {
print(error)
}