2015-11-04 6 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

चेक है अगर तेज का उपयोग करके हल किया: "application/json":

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

सामग्री प्रकार के रूप में नहीं आ रहे हैं। इसका मतलब है कि सर्वर से प्रतिक्रिया वैध JSON स्ट्रिंग नहीं है।

0

मुझे एक ही त्रुटि मिली। गलती को हल करता है अनुरोध में है। अनुरोध में पैरामीटर जोड़ने के दौरान नीचे दिए गए वाक्यविन्यास ने समस्या को ठीक किया है।

request.setValue("Value", forHTTPHeaderField: "Key") 
संबंधित मुद्दे