我的JSON结构为:
"symbol": "SNAP",
"stock_exchange_short": "NYSE",
"timezone_name": "America/New_York",
"intraday": {
"2019-12-20 15:59:00": {
"open": "15.55",
"close": "15.55",
"high": "15.55",
"low": "15.52",
"volume": "670218"
},
"2019-12-20 15:58:00": {
"open": "15.55",
"close": "15.55",
"high": "15.55",
"low": "15.54",
"volume": "284225"
},
...
}
关于如何实现日期信息的任何想法我试图这样解析它:
public struct WorldTradingIntradayData: Decodable {
let symbol : String
let stock_exchange_short : String
let timezone_name : String
let intraday : Intraday?
}
public struct Intraday: Decodable {
let dateTime: WorldTradingIntradayDetails
public struct WorldTradingIntradayDetails: Decodable {
let open : String
let close : String
let high : String
let low : String
let volume : String
}
但是它没有按预期的方式工作。关于如何做到这一点的任何想法?
替换
let intraday : Intraday?
with
let intraday : [String:WorldTradingIntradayDetails]
并且完全摆脱了public struct Intraday: Decodable {
我认为应该将其视为字符串,然后,如果要在日期中进行转换,则需要更改T的空格以创建dateFormatter
struct WorldTradingIntradayData: Decodable {
let symbol: String
let stockExchangeShort: String
let timezoneName: String
let intraday: [String: Intraday]
enum CodingKeys: String, CodingKey {
case symbol
case stockExchangeShort = "stock_exchange_short"
case timezoneName = "timezone_name"
case intraday
}
}
struct Intraday: Decodable {
let intradayOpen: String
let close: String
let high: String
let low: String
let volume: String
enum CodingKeys: String, CodingKey {
case intradayOpen = "open"
case close
case high
case low
case volume
}
}
要求json创建者以以下格式发送数据,您需要具有一个常量密钥才能进行解析。2019-12-20 15:59:00
时间不应该用作键
"intraday": [
"dateTime": "2019-12-20 15:59:00",
"data": {
"open": "15.55",
"close": "15.55",
"high": "15.55",
"low": "15.52",
"volume": "670218"
},
"dateTime": "2019-12-20 15:59:00",
"data": {
"open": "15.55",
"close": "15.55",
"high": "15.55",
"low": "15.52",
"volume": "670218"
}
]