Reputation: 4167
Currently learning Swift and I'm new to parsing of json. I'm trying to parse json using alamofire using swift 3. However Im not getting any response. How should I get the value of parameter1 or parameter 2 which were nested? My json looks like this:
{ "data":{
"level1":{
"level2":{
"parameter1":"000000",
"parameter2":"00/00/00 00:00:00",
"parameter3":"00.0",
}
My swift code looks like this ,
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()
}
Upvotes: 1
Views: 152
Reputation: 1842
I recommend you that use SwiftJson (https://cocoapods.org/pods/SwiftyJSON)
if you need to validate that something exist you can use .exist() (Return a boolean)
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
}
If you have this JSON and you need to know if parameter1 exist:
(Put a break point in print(json))
(In the Console)
(lldb) po json["data"]["level1"]["level2"]["parameter1"].exists()
// response true
In the code would be:
if json["data"]["level1"]["level2"]["parameter1"].exists(){
}
If you need to get the value would be:
if json["data"]["level1"]["level2"]["parameter1"].exists(){
let parameter1 = json["data"]["level1"]["level2"]["parameter1"]
print(parameter1)
}
Complete example:
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"])
}
The console log is:
000000
{
"data" : {
"level1" : {
"level2" : {
"parameter1" : "000000",
"parameter3" : "00.0",
"parameter2" : "00\/00\/00 00:00:00"
}
}
}
}
Upvotes: 1