无法使用闭包使用 alamofire 解析 json
Posted
技术标签:
【中文标题】无法使用闭包使用 alamofire 解析 json【英文标题】:Unable to parse json using alamofire using closures 【发布时间】:2017-02-08 10:01:58 【问题描述】:目前正在学习 Swift,我是解析 json 的新手。 我正在尝试使用 swift 3 使用 alamofire 解析 json。但是我没有得到任何响应。我应该如何获取嵌套的参数 1 或参数 2 的值? 我的 json 看起来像这样:
"data":
"level1":
"level2":
"parameter1":"000000",
"parameter2":"00/00/00 00:00:00",
"parameter3":"00.0",
我的 swift 代码如下所示,
func downloadDataDetails(completed: @escaping DownloadComplete)
//Get data from URL
Alamofire.request("MY_URL").responseJSON response in
let result = response.result
if let dict = result.value as? Dictionary<String , AnyObject>
if let data = dict["data"] as? String
if let level1 = dict["level1"] as? String
if let level2 = dict["level2"] as? String?
self._myValue = level2
completed()
【问题讨论】:
【参考方案1】:我推荐你使用 SwiftJson (https://cocoapods.org/pods/SwiftyJSON)
如果您需要验证某些东西是否存在,您可以使用 .exist()(返回布尔值)
func test()
let json: JSON = [ "data":[
"level1":[
"level2":[
"parameter1":"000000",
"parameter2":"00/00/00 00:00:00",
"parameter3":"00.0"
]
]
]
]
print(json) //Create a breakpoint here
如果你有这个 JSON 并且你需要知道 parameter1 是否存在:
(在 print(json) 中打断点)
(在控制台中)
(lldb)po json["data"]["level1"]["level2"]["parameter1"].exists()
// response true
在代码中是:
if json["data"]["level1"]["level2"]["parameter1"].exists()
如果你需要得到的值是:
if json["data"]["level1"]["level2"]["parameter1"].exists()
let parameter1 = json["data"]["level1"]["level2"]["parameter1"]
print(parameter1)
完整示例:
func test()
let json: JSON = [ "data":[
"level1":[
"level2":[
"parameter1":"000000",
"parameter2":"00/00/00 00:00:00",
"parameter3":"00.0"
]
]
]
]
if json["data"]["level1"]["level2"]["parameter1"].exists()
let parameter1 = json["data"]["level1"]["level2"]["parameter1"]
print(parameter1)
print(json["parameter1"])
控制台日志是:
000000
"data" :
"level1" :
"level2" :
"parameter1" : "000000",
"parameter3" : "00.0",
"parameter2" : "00\/00\/00 00:00:00"
【讨论】:
以上是关于无法使用闭包使用 alamofire 解析 json的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 AlamoFire 和 SwiftyJSON 解析 JSON
Alamofire 4 请求返回 NSArray,无法弄清楚如何在 Swift 3 中使用 SwiftyJSON 进行解析