目前正在学习Swift,我是解析json的新手。 我正在尝试使用swift 3使用alamofire解析json。但我没有得到任何响应。我应该如何得到嵌套的参数1或参数2的值? 我的json看起来像这样:
{ "data":{
"level1":{
"level2":{
"parameter1":"000000",
"parameter2":"00/00/00 00:00:00",
"parameter3":"00.0",
}
我的快速代码看起来像这样,
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()
}
答案 0 :(得分: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,你需要知道参数1是否存在:
(在打印中放置一个断点(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"
}
}
}
}