2015-11-04 67 views
5

NSJSONSerialization.JSONObjectWithData錯誤使用像一個字符串時, 「ABC」,但成功使用 「123」NSJSONSerialization錯誤。代碼= 3840「,圍繞字符值無效0

我不知道爲什麼。


錯誤日誌

2015-11-04 17:42:02.997 SwiftJsonDemo[27196:2701028] Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.} 

代碼

//var str = "123" // ok 
var str = "abc" // error 
let strData = str.dataUsingEncoding(NSUTF8StringEncoding) 

if let d = strData { 
    let urlStr = String(data: d, encoding: NSUTF8StringEncoding) 

    do { 
     let json = try NSJSONSerialization.JSONObjectWithData(d, options: NSJSONReadingOptions.AllowFragments) 
    } catch let e { 
     print(e) 
    } 
} else { 
    print("data error") 
} 

回答

5
123 

是一個有效的JSON數,所以這個可以,如果.AllowFragments 選項設置被解讀爲JSON。 JSON字符串必須被引號括起來: (見http://www.json.org的細節):

"abc" 

在斯威夫特字符串文字,這些引號轉義成 反斜槓:

let str = "\"abc\"" // OK! 
let strData = str.dataUsingEncoding(NSUTF8StringEncoding) 
// ... 
+0

非常感謝。得到它了! – aotian16

0

請檢查郵遞員的回覆。我只是通過檢查JSON響應是正確的格式或HTML格式

0

請與下面的代碼行,如果使用SWIFT解決:

let contentType = response.response?.allHeaderFields["Content-Type"] as? String 

內容類型將不會再爲:「應用/ JSON」。它意味着來自服務器的響應不是有效的JSON字符串。

0

我得到了同樣的錯誤。結果發現錯誤在請求中。下面的語法在向請求添加參數時解決了問題。

request.setValue("Value", forHTTPHeaderField: "Key") 
相關問題