swiftyJson在嵌套的json中返回null

艾玛米安

我正在使用此功能将帖子值发送到服务器:

func getFirstPageApplication(EMPTY:String,completionHandler: @escaping (_ response: String) -> ())
{
    var strResponse = "null"
    var request = URLRequest(url: URL(string: self.baseURL+"getFirstPageApplication")!)
    request.httpMethod = "POST"
    let postString = "EMAIL=\(EMPTY)"
    request.httpBody = postString.data(using: .utf8)
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {                                                 // check for fundamental networking error
            print("error=\(error)")
            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")
        }

        let responseString = String(data: data, encoding: .utf8)
        strResponse =  responseString!
        completionHandler(strResponse)
    }
    task.resume()


}

在我的其他控制器中,我使用此函数来使用上述方法:

func initialFirstView()
{
    RestApiManager.sharedInstance.getFirstPageApplication(EMPTY:"-"){
        response in

        let json = JSON(response)

        print("res: \(json["sliders"])")

    }
}

我有响应值,但json["sliders"]返回null,我不知道!

我的回应值:

{"sliders":[{"id":4,"title":"\u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u0622\u0648\u0627\u0632 \u0628\u0627 \u0627\u0633\u062a\u0627\u062f\u06a9\u062a","image":"1500801181_ostadcat_slider_1.jpg","status":1,"created_at":"2017-07-23 04:43:01","updated_at":"2017-07-23 04:43:01"},{"id":6,"title":"\u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0647\u0645\u0647, \u0647\u0645\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9\u06cc","image":"1500801699_ostadcat_slider_3.jpg","status":1,"created_at":"2017-07-23 04:51:39","updated_at":"2017-07-23 04:51:39"},{"id":7,"title":"\u062d\u0631\u0641\u0647 \u0627\u06cc \u062a\u0631\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0648\u0633\u06cc\u0642\u06cc","image":"1500801728_ostadcat_slider_4.jpg","status":1,"created_at":"2017-07-23 04:52:08","updated_at":"2017-07-23 04:52:08"},{"id":8,"title":"\u062a\u0648 \u0647\u0645 \u0645\u06cc \u062a\u0648\u0646\u06cc \u0645\u062b\u0644 \u0645\u0646 \u0628\u0627\u0634\u06cc!!!","image":"1500801751_ostadcat_slider_2.jpg","status":1,"created_at":"2017-07-23 04:52:31","updated_at":"2017-07-23 04:52:31"}],"tutorials":[{"id":1,"home_image":"1500806287_img_home_test_6.png","tutorial_image":"1500809220_Hot-Romanian-Inna-in-black-goggles-wallpapers.jpg","tutorial_title":"\u062e\u0648\u0627\u0646\u0646\u062f\u06af\u06cc","tutorial_description":"\u0622\u0645\u0648\u0632\u0634 \u062c\u0627\u0645\u0639 \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u06cc","video":"1500810916_innaHot2.mp4","video_title":"\u062e\u0648\u0627\u0646\u0646\u062f\u06af\u06cc \u0631\u0627 \u062d\u0631\u0641\u0647 \u0627\u06cc \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f","teacher_image":"1500808975_inna-dark-hair-white-dresses-digital-art.jpg","teacher_name":"\u0627\u06cc\u0646\u0627","teacher_bio":"\u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0632 \u0633\u0627\u0644 2009 \u062a\u0627 \u0628\u0647 \u0627\u0644\u0627\u0646","status":1,"created_at":"2017-06-29 17:31:20","updated_at":"2017-07-23 11:55:16"},{"id":2,"home_image":"1500802877_img_home_test_1.jpg","tutorial_image":"1500802877_Image.png","tutorial_title":"\u0622\u0645\u0648\u0632\u0634 \u06af\u06cc\u062a\u0627\u0631 \u0627\u0633\u0644\u0634","tutorial_description":"\u06af\u06cc\u062a\u0627\u0631 \u0627\u0633\u0644\u0634 \u0631\u0627 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f!!!","video":"1500804433_oneRepublic.mp4","video_title":"\u0646\u0645\u0648\u0646\u0647 \u0622\u0645\u0648\u0632\u0634 \u06af\u06cc\u062a\u0627\u0631","teacher_image":"1500802882_maxresdefault.jpg","teacher_name":"\u0648\u0627\u0646 \u0631\u06cc\u067e\u0627\u0628\u0644\u06cc\u06a9","teacher_bio":"\u06af\u0631\u0648\u0647 \u0648\u0627\u0646 \u0631\u06cc\u067e\u0627\u0628\u0644\u06cc\u06a9 \u0634\u0627\u0645\u0644 5 \u0639\u0636\u0648","status":1,"created_at":"2017-06-29 17:35:09","updated_at":"2017-07-23 05:37:13"}]}

@Reinier Melian解决了

 func getFirstPageApplication(EMPTY:String,completionHandler: @escaping (_ response: AnyObject) -> ())
    {
        var strResponse = "null"
        var request = URLRequest(url: URL(string: self.baseURL+"getFirstPageApplication")!)
        request.httpMethod = "POST"
        let postString = "EMAIL=\(EMPTY)"
        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            if error != nil {
                DispatchQueue.main.async {
                    completionHandler({} as AnyObject)
                }

            } else {
                if let usableData = data {
                    do {

                        let jsonResult = try JSONSerialization.jsonObject(with: usableData, options:
                            JSONSerialization.ReadingOptions.mutableContainers)
                        //print("worked")
                        //print(jsonResult) //this part works fine
                        DispatchQueue.main.async {
                            completionHandler(jsonResult as AnyObject)
                        }

                    } catch {
                        DispatchQueue.main.async {
                            completionHandler({} as AnyObject)
                        }
                        print("JSON Processing Failed")
                    }
                }
            }
        }
        task.resume()

    }
雷尼尔·梅里安

尝试在您的完成处理程序中使用AnyObject而不是,String并添加JSONSerialization以序列化为json

func getFirstPageApplication(EMPTY:String,completionHandler: @escaping (_ response: AnyObject) -> ())
{
    var strResponse = "null"
    var request = URLRequest(url: URL(string: self.baseURL+"getFirstPageApplication")!)
    request.httpMethod = "GET"
    let postString = "EMAIL=\(EMPTY)"
    request.httpBody = postString.data(using: .utf8)
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {                                                 // check for fundamental networking error
            print("error=\(error)")
            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")
        }

        do {
            let json:AnyObject? = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
            if let parseJSON = json{
                print(parseJSON)
            }
            completionHandler(parseJSON)
        }

    }
    task.resume()

}

然后,您必须能够毫无问题地使用它

func initialFirstView()
{
    RestApiManager.sharedInstance.getFirstPageApplication(EMPTY:"-"){
        response in
        print("res: \(response["sliders"])")
    }
}

此代码未经测试,所以请告诉我是否可行

希望这可以帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章