How do I access an embedded JSON value using Alamofire and SwiftyJSON?

I am trying to access nested JSON results using swiftyJSON and Alamofire. My print value is zero and I believe that I am not doing this correctly. What should be my parameters? I am trying to get the price value located at http://quotes.rest/qod.json

func getAPI() {
    Alamofire.request(.GET, "http://quotes.rest/qod.json", parameters: ["contents": "quotes"])
        .responseJSON { response in
            if let JSON = response.result.value {
                print(JSON["quote"])

            }
    }
}

      

+2


source to share


2 answers


You quotes

have an array in your JSON , so if you want to access the quote

first object, you must do so by accessing the first object:



 func getAPI() {
        Alamofire.request(.GET, "http://quotes.rest/qod.json", parameters: ["contents": "quotes"])
            .responseJSON { response in
                if let jsonValue = response.result.value {
                    let json = JSON(jsonValue)
                    if let quote = json["contents"]["quotes"][0]["quote"].string{
                     print(quote)
                    }
                }
        }
    }

      

+3


source


If the json syntax is incorrect as it is fully printed, you should notice what is wrong.



func getAPI() {
Alamofire.request(.GET, "http://quotes.rest/qod.json", parameters: ["contents": "quotes"])
    // JSON response
        .responseJSON { response in switch response.result {
        case .Failure(let error):
            // got an error in getting the data, need to handle it
            print("error calling GET, json response type :")
            // print alamofire error code
            let statusCode = error.code
            print("error code json : \(statusCode)")
            // print json response from server
            if let data = response.data {
                print("Response data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)")
            }
            // print http status code plus error string
            print(NSHTTPURLResponse.localizedStringForStatusCode(statusCode))
            if let httpResponse : NSHTTPURLResponse = response.response {
                print("HTTP Response statusCode: \(httpResponse.statusCode)")
            }
        case .Success( _):
            let statusCode = (response.response?.statusCode)!
            print("status code json : \(statusCode)")
            print("there is a response json")
            //print(value)
            // parse the result as JSON, since that what the API provides and save datas as new user in coreData
            guard let data = response.data else {
                print("Error parsing response data")
                return
            }
            let json = JSON(data: data)
            // access first element of the array
            if let postContent = json["contents"]["quotes"][0]["quote"].string{
             // deal with json
            }
       }
}

      

0


source







All Articles