Search code examples
swiftalamofireflickrswifty-json

unable to print json value with alamofire


I am trying to get data with flickr API and I wrote a simple code with Alamofire and swiftyJSON to get this data from flickr but I am able to print the data size but when I try to print the json, my catch block runs. my codes are shown below

func getPhotos(completion: @escaping CompletionHandler) -> Void {

        let parameter: [String: Any] = [
            "method": PHOTOS_METHOD,
            "api_key": FLICKR_API_KEY,
            "per_page": PER_PAGE,
            "page": PAGE,
            "format": FORMAT_TYPE,
            "nojsoncallback": JSON_CALLBACK]

        Alamofire.request(FLICKR_URL, method: .get, parameters: parameter, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in

            if response.result.error == nil {

                guard let data = response.data else {return}

                do {
                    if let json = try JSON(data: data).array {
                        print(json)
                    }
                    completion(true)
                } catch {
                    print("eroorrrre")
                    completion(false)
                }

                print("CALL CORRECT")
                print(data)

                completion(true)
            }
            else {
                completion(false)
                debugPrint(response.result.error as Any)
            }
        }
    }

my console log

eroorrrre
CALL CORRECT
128 bytes

I am not sure what I am doing wrong here, any help would be appriciated


Solution

  • Try this

    Alamofire.request(FLICKR_URL, method: .get, parameters: parameter, headers: HEADER).responseJSON { response in // call responseJSON instead of responseString
    
        if response.result.isSuccess { // If http request is success
    
            let json: JSON = JSON(response.result.value!) // JSON format from SwiftyJSON (I suppose you are using it)
    
            guard let data = json.array else { // You suppose that json is array of objects
                print("Unexpected JSON format")
                completion(false)
            }
    
            print(data) 
            completion(true)
    
        } else {
            print(response.error)
            completion(false)
        }
    }