在 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

JSON仅在swift中解析特定键

如何使用 jsonDecoder 处理来自 JSON 响应的动态键?

swift 4 使用 Alamofire 解析没有键的 JSON

如何使用 SWIFT3 解析此 JSON [重复]

带有动态键的 Swift Codable