如何在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