簡體   English   中英

Swift-無法從NSData創建JSON對象

[英]Swift - Unable to create JSON object from NSData

我正在向服務器發出發布請求以驗證登錄嘗試。 如果嘗試成功,則會在NSdata塊中從服務器返回一些信息。 我希望能夠將其分解為json對象,以便可以輕松解析它。

func connectToServerAndGetCookie(username: String, password: String) -> NSString {
    var url = "********"
    var request = HTTPTask()
    var parameters = ["username": username, "password": password]
    var cookies = ""
    request.requestSerializer = JSONRequestSerializer()
    request.POST(url, parameters: parameters, success: {(response: HTTPResponse) in
        if response.responseObject != nil {
            let data = response.responseObject as NSData
            var jsonError: NSError?
            let str = NSString(data: data, encoding: NSUTF8StringEncoding)

 ////////////////// here is where it fails on the nsjsonserialization. the error: 
//////////////////Cannot convert the expression's type 'NSDictionary?' to type 'NilLiteralConvertible'
// but when i remove the ? on the as, I get the error: expression does not conform to type '$T5'

let json2 : NSDictionary = NSJSONSerialization.JSONObjectWithData(str, options: nil, error:&jsonError ) as? NSDictionary

            println(json2)
            // parse cookies here
        }
        },failure: {(error: NSError) in
            println(" error \(error)")
    })
    return cookies
}

我只是想將NSData塊分解為json對象

您可以直接使用NSData而不是將NSData轉換為String。

import Foundation

var error: NSError?
let jsonData: NSData = response.responseObject

let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary

對於Swift 3,您也可以嘗試以下操作:

let jsonData: Data = data
let jsonDict = try! JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary

例如:

print(jsonDict["width"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM