如何在swift 3中解析Json对象

Posted

技术标签:

【中文标题】如何在swift 3中解析Json对象【英文标题】:How to parse Json object in swift 3 【发布时间】:2016-11-02 10:47:34 【问题描述】:

您好,我的问题与 json 对象有关。我有这个链接“http://ip-api.com/json”,这个链接提供了您的 IP 地址的详细信息。我只需要在 swift 3 中从这个 json 文件中打印 IP 地址。我很新可能是我的问题是基本的,但我需要一些帮助来整理我的项目。所以因为我已经做了如下。

let requestURL: NSURL = NSURL(string: "http://ip-api.com/json")!

    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(url: requestURL as URL)
    let session = URLSession.shared
    let task = session.dataTask(with: urlRequest as URLRequest) 
        (data, response, error) -> Void in

        let httpResponse = response as! HTTPURLResponse
        let statusCode = httpResponse.statusCode

        if (statusCode == 200) 
            print("Everyone is fine, file downloaded successfully.")

            do

                let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:AnyObject]

                if let stations = json["city"] as? [[String: AnyObject]] 



                  for station in stations 

                      if let name = station["regionName"] as? String 

                        self.names.append(name)
                        print("this is query\(name)")

                      
                      else
                         print ("no ip address is found")
                    

                  

                

            
            catch 
                print("Error with Json: \(error)")
            

        
    

    task.resume()

提前非常感谢。

【问题讨论】:

【参考方案1】:

IP 地址是 JSON 顶层键 query 的值

let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:Any]
if let query = json["query"] as? String 
  print(query)

在 Swift 3 中,JSON 字典的类型是 [String:Any]

PS:此任务不需要 URL 请求,直接传递 URL 并使用原生结构体 URL(和 URLRequest

let requestURL = URL(string: "http://ip-api.com/json")!
...
let task = session.dataTask(with: requestURL) 

【讨论】:

我正在为这个项目使用一个 api 并且不是免费的。有没有其他方法可以从 ios 设备获取 IP 地址。 ???谢谢 例如wtfismyip - IPv4和wtfismyip - IPv6

以上是关于如何在swift 3中解析Json对象的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftyJSON 在 Swift 中解析这个 JSON 对象?

在 Swift 3.0 中访问从 iTunes API 解析的 JSON 对象

在 Swift 3 中将 JSON 对象解析为 NSArray

如何正确解析 SWIFT 中的 JSON 对象

如何在 Swift 3 中解析来自 URL 的 JSON 数据

在 swift 2 中解析 json 对象