Search code examples
iosjsonalamofire

cannot extract JSON


Hello I am trying to extract a json. However I am getting an error saying Cannot convert value of type 'Data' to expected argument type 'NSData'. Is there something that I am doing wrong?

    success: { (response) -> Void in
        var dataStream: Data = Data.init(referencing: response!)
        do {
        let data = try JSONSerialization.jsonObject(with: dataStream, options: JSONSerialization.ReadingOptions.mutableContainers)as AnyObject
        }catch{
        }
        if let id = response!["money"]as? String {
            print(id)
        }

    }){ (error) -> Void in
        print("error")
    }
}

Update2

let request = Alamofire.request(apiUrl, method: .get)


    request.responseJSON { response in
        switch response.result
        {
        case .success:
            success(response.result.value as AnyObject)
        case .failure(let error):
            failure(error as NSError)
        }
    }
}

Solution

  • Your problem is here

    var dataStream: Data = Data.init(referencing: response!)
    

    in Docs

    init(referencing reference: NSData)

    response should be of type NSData not Data , you may try

    let responseDict = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:Any]
    

    note cast to expected return whether it's dictionary or array

    this

     if let id = response!["money"]as? String {
            print(id)
        }
    

    should be replaced with

      if let id = responseDict!["money"]as? String {
            print(id)
        }
    

    You can try Alamofire with SwiftyJson

            Alamofire.request("https://yourlinkdownloadjson/abc").responseJSON { response in
                debugPrint(response)
    
                if let json = response.data {
                    let data = JSON(data: json)
                    print("data\(data["money"])")
    
                }
            }