दिलचस्प पोस्ट
पर्ल (या, और) और (||, &&) शॉर्ट सर्किट ऑपरेटरों के बीच क्या अंतर है? जावास्क्रिप्ट और PHP फ़ंक्शन कैसे CodeIgniter के साथ WordPress टेम्पलेट को एकीकृत करने के लिए फंक्शन घोषणा: के एंड आर बनाम एएनएसआई बूट लोडर कर्नेल कोड पर कूद नहीं है मैं सर्वर-साइड स्क्रिप्ट का उपयोग कर एक वेबपृष्ठ का एक स्क्रीनशॉट कैसे बना सकता हूं? 'जीआईटी पुल मूल माइब्रैंच' स्थानीय मर्बैंक छोड़ देता है एन मूल से आगे रहता है क्यूं कर? एंड्रॉइड एप्लीकेशन में वॉयस डिटेक्शन Multithreaded NamePipeServer सी # में REST एपीआई त्रुटि रिटर्न अच्छे अभ्यास 'स्लग' की व्युत्पत्ति क्या है? कैसे डिव पक्ष को एक तरफ रखा जाए ANTLR का उपयोग कर निर्मित एएसटी उत्पादन कैसे करें? "वेबएक्सएमएल एट्रिब्यूट की आवश्यकता है" मेवेन में त्रुटि ओएस एक्स पर डिफ़ॉल्ट जावा (जेडीके) संस्करण कैसे सेट या बदलना है?

स्विफ्ट में अलामॉफर एपीआई से जेएसओएन प्रतिक्रिया को कैसे पार्स करना है?

निम्नलिखित कोड मैंने लिखा है और मुझे JSON में प्रतिक्रिया मिल रही है, लेकिन JSON का प्रकार "AnyObject" है और मैं उसे अरे में रूपांतरित करने में सक्षम नहीं हूं ताकि मैं उसका उपयोग कर सकूं।

Alamofire.request(.POST, "MY URL", parameters:parameters, encoding: .JSON) .responseJSON { (request, response, JSON, error) in println(JSON?) } 

वेब के समाधान से एकत्रित समाधान "स्विफ्ट में अलामॉफर एपीआई से जेएसओएन प्रतिक्रिया को कैसे पार्स करना है?"

स्विफ्ट 2.0 अलामफर 3.0 का जवाब वास्तव में इस तरह दिखना चाहिए:

 Alamofire.request(.POST, url, parameters: parameters, encoding:.JSON).responseJSON { response in switch response.result { case .Success(let JSON): print("Success with JSON: \(JSON)") let response = JSON as! NSDictionary //example if there is an id let userId = response.objectForKey("id")! case .Failure(let error): print("Request failed with error: \(error)") } } 

https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%203.0%20Migration%20Guide.md

Alamofire 4.0 और स्विफ्ट 3.0 के लिए अद्यतन:

 Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default) .responseJSON { response in print(response) //to get status code if let status = response.response?.statusCode { switch(status){ case 201: print("example success") default: print("error with response status: \(status)") } } //to get JSON return value if let result = response.result.value { let JSON = result as! NSDictionary print(JSON) } } 

जैसा कि ऊपर बताया गया है कि आप स्फीटीजेएसओएन पुस्तकालय का उपयोग कर सकते हैं और अपने मूल्यों को प्राप्त कर सकते हैं जैसे मैंने नीचे किया है

 Alamofire.request(.POST, "MY URL", parameters:parameters, encoding: .JSON) .responseJSON { (request, response, data, error) in var json = JSON(data: data!) println(json) println(json["productList"][1]) } 

स्क्रिप्ट से मेरी जेसन उत्पाद सूची वापसी

 { "productList" :[ {"productName" : "PIZZA","id" : "1","productRate" : "120.00","productDescription" : "PIZZA AT 120Rs","productImage" : "uploads\/pizza.jpeg"}, {"productName" : "BURGER","id" : "2","productRate" : "100.00","productDescription" : "BURGER AT Rs 100","productImage" : "uploads/Burgers.jpg"} ] } 

आउटपुट:

 { "productName" : "BURGER", "id" : "2", "productRate" : "100.00", "productDescription" : "BURGER AT Rs 100", "productImage" : "uploads/Burgers.jpg" } 

मुझे स्विफ्ट 2 के लिए GitHub पर उत्तर मिला

https://github.com/Alamofire/Alamofire/issues/641

 Alamofire.request(.GET, URLString, parameters: ["foo": "bar"]) .responseJSON { request, response, result in switch result { case .Success(let JSON): print("Success with JSON: \(JSON)") case .Failure(let data, let error): print("Request failed with error: \(error)") if let data = data { print("Response data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)") } } } 

मैं न तो एक JSON विशेषज्ञ हूं और न ही स्विफ्ट विशेषज्ञ हूं, लेकिन मेरे लिए यह काम कर रहा है। 🙂 मैंने अपने मौजूदा ऐप से कोड निकाला है, और केवल "MyLog to println" को बदल दिया है, और रिक्त स्थान के साथ इसे एक कोड ब्लॉक (उम्मीद है कि मैंने इसे नहीं तोड़ दिया) के रूप में दिखाने के लिए बदल दिया।

 func getServerCourseVersion(){ Alamofire.request(.GET,"\(PUBLIC_URL)/vtcver.php") .responseJSON { (_,_, JSON, _) in if let jsonResult = JSON as? Array<Dictionary<String,String>> { let courseName = jsonResult[0]["courseName"] let courseVersion = jsonResult[0]["courseVersion"] let courseZipFile = jsonResult[0]["courseZipFile"] println("JSON: courseName: \(courseName)") println("JSON: courseVersion: \(courseVersion)") println("JSON: courseZipFile: \(courseZipFile)") } } } 

उम्मीद है की यह मदद करेगा।

संपादित करें:

संदर्भ के लिए, यहां मेरा PHP स्क्रिप्ट रिटर्न क्या है:

 [{"courseName": "Training Title","courseVersion": "1.01","courseZipFile": "101/files.zip"}] 

तेज 3

 pod 'Alamofire', '~> 4.4' pod 'SwiftyJSON' File json format: { "codeAd": { "dateExpire": "2017/12/11", "codeRemoveAd":"1231243134" } } import Alamofire import SwiftyJSON private func downloadJson() { Alamofire.request("https://yourlinkdownloadjson/abc").responseJSON { response in debugPrint(response) if let json = response.data { let data = JSON(data: json) print("data\(data["codeAd"]["dateExpire"])") print("data\(data["codeAd"]["codeRemoveAd"])") } } } 

स्विफ्ट 3, एलामोफर 4.4, और स्फ़ीटीजसन:

 Alamofire.request(url, method: .get) .responseJSON { response in if response.data != nil { let json = JSON(data: response.data!) let name = json["people"][0]["name"].string if name != nil { print(name!) } } } 

यह JSON इनपुट को पार्स करेगा:

 { people: [ { name: 'John' }, { name: 'Dave' } ] } 

मुझे अपने ऐप में उपयोग करने वाले JSON प्रारूप में response.result.value (Alamofire प्रतिक्रिया के अंदर JSON समापन) को रूपांतरित करने का एक तरीका मिला।

मैं अलामफर 3 और स्विफ्ट 2.2 का उपयोग कर रहा हूं।

यहां मैंने उपयोग किया हुआ कोड है:

  Alamofire.request(.POST, requestString, parameters: parameters, encoding: .JSON, headers: headers).validate(statusCode: 200..<303) .validate(contentType: ["application/json"]) .responseJSON { (response) in NSLog("response = \(response)") switch response.result { case .Success: guard let resultValue = response.result.value else { NSLog("Result value in response is nil") completionHandler(response: nil) return } let responseJSON = JSON(resultValue) // I do any processing this function needs to do with the JSON here // Here I call a completionHandler I wrote for the success case break case .Failure(let error): NSLog("Error result: \(error)") // Here I call a completionHandler I wrote for the failure case return } 

मैं आमतौर पर आईओएस में JSON serialize या deserialize करने के लिए ग्लोस पुस्तकालय का उपयोग करें। उदाहरण के लिए, मेरे पास JSON है जो इस तरह दिखता है:

 {"ABDC":[{"AB":"qwerty","CD":"uiop"}],[{"AB":"12334","CD":"asdf"}]} 

सबसे पहले, मैं ग्लोस संरचना में JSON सरणी को मॉडल करता हूं:

 Struct Struct_Name: Decodable { let IJ: String? let KL: String? init?(json: JSON){ self.IJ = "AB" <~~ json self.KL = "CD" <~~ json } } 

और फिर अलामफर प्रतिक्रिया में जेसन, मैं यह निम्नलिखित बात करता हूं:

 Alamofire.request(url, method: .get, paramters: parametersURL).validate(contentType: ["application/json"]).responseJSON{ response in switch response.result{ case .success (let data): guard let value = data as? JSON, let eventsArrayJSON = value["ABDC"] as? [JSON] else { fatalError() } let struct_name = [Struct_Name].from(jsonArray: eventsArrayJSON)//the JSON deserialization is done here, after this line you can do anything with your JSON for i in 0 ..< Int((struct_name?.count)!) { print((struct_name?[i].IJ!)!) print((struct_name?[i].KL!)!) } break case .failure(let error): print("Error: \(error)") break } } 

उपरोक्त कोड से आउटपुट:

 qwerty uiop 1234 asdf 
  pod 'Alamofire' pod 'SwiftyJSON' pod 'ReachabilitySwift' import UIKit import Alamofire import SwiftyJSON import SystemConfiguration class WebServiceHelper: NSObject { typealias SuccessHandler = (JSON) -> Void typealias FailureHandler = (Error) -> Void // MARK: - Internet Connectivity class func isConnectedToNetwork() -> Bool { var zeroAddress = sockaddr_in() zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size) zeroAddress.sin_family = sa_family_t(AF_INET) guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, { $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { SCNetworkReachabilityCreateWithAddress(nil, $0) } }) else { return false } var flags: SCNetworkReachabilityFlags = [] if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) { return false } let isReachable = flags.contains(.reachable) let needsConnection = flags.contains(.connectionRequired) return (isReachable && !needsConnection) } // MARK: - Helper Methods class func getWebServiceCall(_ strURL : String, isShowLoader : Bool, success : @escaping SuccessHandler, failure : @escaping FailureHandler) { if isConnectedToNetwork() { print(strURL) if isShowLoader == true { AppDelegate.getDelegate().showLoader() } Alamofire.request(strURL).responseJSON { (resObj) -> Void in print(resObj) if resObj.result.isSuccess { let resJson = JSON(resObj.result.value!) if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } debugPrint(resJson) success(resJson) } if resObj.result.isFailure { let error : Error = resObj.result.error! if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } debugPrint(error) failure(error) } } }else { CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!) } } class func getWebServiceCall(_ strURL : String, params : [String : AnyObject]?, isShowLoader : Bool, success : @escaping SuccessHandler, failure :@escaping FailureHandler){ if isConnectedToNetwork() { if isShowLoader == true { AppDelegate.getDelegate().showLoader() } Alamofire.request(strURL, method: .get, parameters: params, encoding: JSONEncoding.default, headers: nil).responseJSON(completionHandler: {(resObj) -> Void in print(resObj) if resObj.result.isSuccess { let resJson = JSON(resObj.result.value!) if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } success(resJson) } if resObj.result.isFailure { let error : Error = resObj.result.error! if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } failure(error) } }) } else { CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!) } } class func postWebServiceCall(_ strURL : String, params : [String : AnyObject]?, isShowLoader : Bool, success : @escaping SuccessHandler, failure :@escaping FailureHandler) { if isConnectedToNetwork() { if isShowLoader == true { AppDelegate.getDelegate().showLoader() } Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: nil).responseJSON(completionHandler: {(resObj) -> Void in print(resObj) if resObj.result.isSuccess { let resJson = JSON(resObj.result.value!) if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } success(resJson) } if resObj.result.isFailure { let error : Error = resObj.result.error! if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } failure(error) } }) }else { CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!) } } class func postWebServiceCallWithImage(_ strURL : String, image : UIImage!, strImageParam : String, params : [String : AnyObject]?, isShowLoader : Bool, success : @escaping SuccessHandler, failure : @escaping FailureHandler) { if isConnectedToNetwork() { if isShowLoader == true { AppDelegate.getDelegate().showLoader() } Alamofire.upload( multipartFormData: { multipartFormData in if let imageData = UIImageJPEGRepresentation(image, 0.5) { multipartFormData.append(imageData, withName: "Image.jpg") } for (key, value) in params! { let data = value as! String multipartFormData.append(data.data(using: String.Encoding.utf8)!, withName: key) print(multipartFormData) } }, to: strURL, encodingCompletion: { encodingResult in switch encodingResult { case .success(let upload, _, _): upload.responseJSON { response in debugPrint(response) //let datastring = String(data: response, encoding: String.Encoding.utf8) // print(datastring) } case .failure(let encodingError): print(encodingError) if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } let error : NSError = encodingError as NSError failure(error) } switch encodingResult { case .success(let upload, _, _): upload.responseJSON { (response) -> Void in if response.result.isSuccess { let resJson = JSON(response.result.value!) if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } success(resJson) } if response.result.isFailure { let error : Error = response.result.error! as Error if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } failure(error) } } case .failure(let encodingError): if isShowLoader == true { AppDelegate.getDelegate().dismissLoader() } let error : NSError = encodingError as NSError failure(error) } } ) } else { CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!) } } } ================================== Call Method let aParams : [String : String] = [ "ReqCode" : Constants.kRequestCodeLogin, ] WebServiceHelper.postWebServiceCall(Constants.BaseURL, params: aParams as [String : AnyObject]?, isShowLoader: true, success: { (responceObj) in if "\(responceObj["RespCode"])" != "1" { let alert = UIAlertController(title: Constants.kAppName, message: "\(responceObj["RespMsg"])", preferredStyle: UIAlertControllerStyle.alert) let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in } alert.addAction(OKAction) self.present(alert, animated: true, completion: nil) } else { let aParams : [String : String] = [ "Password" : self.dictAddLogin[AddLoginConstants.kPassword]!, ] CommonMethods.saveCustomObject(aParams as AnyObject?, key: Constants.kLoginData) } }, failure: { (error) in CommonMethods.showAlertWithError(Constants.kALERT_TITLE_Error, strMessage: error.localizedDescription,withTarget: (AppDelegate.getDelegate().window!.rootViewController)!) }) }