2015-01-25 16 views
5

Tôi mới sử dụng nhanh và tôi đang cố phân tích cú pháp một số dữ liệu JSON đơn giản mà tôi đang truy xuất từ ​​API riêng tư mà tôi có. Tôi đang sử dụng thư viện SwiftJSON.Rắc rối phân tích cú pháp JSON bằng Swift bằng SwiftyJSON

Bất kể tôi làm gì, tôi không thể gán biến "videoUploadId" với giá trị "video_upload_id" đến từ phản hồi JSON. Tôi hy vọng tôi cung cấp đủ thông tin để nhận được một số trợ giúp. Cảm ơn

Dưới đây là một đoạn của mã

let task = session.dataTaskWithRequest(request, completionHandler: { (data : NSData!, response, error : NSError!) -> Void in 
       if (error == nil) { 
        // Success 
        let statusCode = (response as NSHTTPURLResponse).statusCode 
        println("Status Code: \(statusCode)\r\n") 

        println("Response: \(response)\r\n") 

        println("Data: \(data)\r\n") 

        let dataContent = NSString(data: data!, encoding: NSUTF8StringEncoding)! 

        println("UTF8 Data: \(dataContent)\r\n") 

        let json = JSON(dataContent) 

        if let videoUploadId = json["video_upload_id"].int { 

         println("Video Upload ID (Dict: int): \(videoUploadId)") 
        } 

        else if let videoUploadId = json["video_upload_id"].string { 

         println("Video Upload ID (Dict: string): \(videoUploadId)") 
        } 

        else if let videoUploadId = json[0].int { 

         println("Video Upload ID (Array: int): \(videoUploadId)") 
        } 

        else if let videoUploadId = json[0].string { 

         println("Video Upload ID (Array: string): \(videoUploadId)") 

        } 


        else { 
         println(json["video_upload_id"].error) 
        } 


       } 
       else { 
        // Failure 
        println("URL Session Task Failed: %@", error.localizedDescription); 
       } 
      }) 
      task.resume()  

Đây là những gì tôi nhận được từ giao diện điều khiển của tôi:

Đăng nhập đáp ứng: HTTP 200 Status Code: 201

phản hồi: { URL: https: // //video/video tải lên /} {mã trạng thái: 201, tiêu đề { Kết nối = "Giữ nguyên"; "Độ dài nội dung" = 24; "Content-Type" = "application/json"; Ngày = "CN, 25 tháng 1 năm 2015 01:02:42 GMT"; Vị trí = "https: // //video/video tải lên /"; Máy chủ = "Apache/2.2.15 (CentOS)"; "Set-Cookie" = "phiên = eyJzZXNzaW9uX3Rva2VuIjp7IiBiIjoiUzAxWGFYRnlVVGM1YjBsa1kxWkJiV2xrYVZwcFZXdDFiR0ZLYW5GQ1VqRjFjbk5GIn19.B6XSMg.HXatQ76ZFaoZEQsnNu1BgsVECKA; HttpOnly; Path = /"; }}

dữ liệu: < 7b227669 64656f5f 75706c6f 61645f69 64223a20 3736307d>

UTF8 dữ liệu: { "video_upload_id": 760}

Tùy chọn (Lỗi miền = SwiftyJSONErrorDomain Mã = 901 "điển [" video_upload_id" ] thất bại, Nó không phải là một từ điển "UserInfo = 0x170238620 {NSLocalizedDescription = Từ điển [" video_upload_id "] thất bại, Nó không phải là một từ điển})

Như bạn thấy từ đầu ra mã và giao diện điều khiển, tôi đang cố gắng thiết lập biến theo nhiều cách khác nhau dường như thất bại. Tôi nhận được lỗi "Từ điển [" video_upload_id "] không thành công, Nó không phải là từ điển" Tôi thậm chí đã thử thêm "[" và phụ thêm "]" để thử xem vấn đề định dạng của nó có phải không.

Bất kỳ manh mối nào?

Trả lời

11

Bạn đang khởi tạo sai. Bạn nên sử dụng:

let json = JSON(data:data) // data is NSData! 

Chuyển đổi NSData thành NSString là không cần thiết, và bằng cách nào đó sai về điều này. SwiftyJSON chỉ có thể được khởi tạo với đối tượng NSData hoặc Swift.

Các vấn đề liên quan