在 Swift 中使用动态键解析 JSON [重复]
Posted
技术标签:
【中文标题】在 Swift 中使用动态键解析 JSON [重复]【英文标题】:Parsing JSON with dynamic keys in Swift [duplicate] 【发布时间】:2016-09-13 07:53:45 【问题描述】:我正在尝试从 url 解析 JSON 文件。这个 JSON 有一个动态的键,因为它每个文件都会改变。现在我的代码如下所示:
let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)
// Parsing
if let stations = json["observations"]!!["-10019482"] as? [[String: AnyObject]]
for observation in stations
if let name = observation["stationname"] as? String
if let temperatuuri = observation["Temperature"] as? String
if let windSpeed = observation["WindSpeedMS"] as? String
print(name, temperatuuri, windSpeed,"m/s")
self.temperature.text = String(temperatuuri)
“-10019482”是动态变化的部分,无法预测键名。但是,我知道它始终是“观察”中的第一个键。
我将如何做同样的事情,但不搜索特定的键名?
【问题讨论】:
如果你确定它是第一个键然后使用像 json["observations"][0] 【参考方案1】:由于json["observations"]
是一个字典,你可以这样做来获取它的第一个键
guard let dict = json["observations"] as? [String: AnyObject],
let firstKey = dict.keys.first else return
print(firstKey) // should print the first key found in the observations dictionary
【讨论】:
你好,唐尼瓦尔斯!我刚刚将我的项目更新到 Swift 3,这破坏了这个解决方案。现在它在你给出的代码的第一行抱怨'类型'任何'没有下标成员'。我尝试解决这个问题,但找不到任何方法。您知道可能的解决方案吗? 您应该先将 JSON 转换为字典:let jsonDict = json as? [String: AnyObject]
并从那里获取以上是关于在 Swift 中使用动态键解析 JSON [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Codable 在 Swift 中使用动态文件名解析 JSON
如何使用 jsonDecoder 处理来自 JSON 响应的动态键?