2015-07-04 7 views
9

में NSJSONSerialization.dataWithJSONObject के बाद पठनीय JSON पाने के लिए मैं कुछ इस के समान कोड है (मैं इसे यहाँ सरल बना दिया है):कैसे स्विफ्ट

let text = "abc" let iosVersion = UIDevice.currentDevice().systemVersion 

let message = ["Text" : text, "IosVersion" : iosVersion] 

      if NSJSONSerialization.isValidJSONObject(message){ 

       let url = NSURL(string: "http://localhost:3000/api/someapi") 

       var request = NSMutableURLRequest(URL: url!) 
       var data = NSJSONSerialization.dataWithJSONObject(message, options: nil, error: nil) 


       println(data) 

       request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
       request.HTTPMethod = "POST" 
       request.HTTPBody = data 

       let task = session.dataTaskWithRequest(request, completionHandler: nil) 

       task.resume() 

यह ठीक काम करता है, लेकिन मैं JSON देखना चाहते हैं एक पठनीय प्रारूप में ताकि मैं सर्वर एप पर अपने एपीआई का निदान करने में सहायता के लिए इसे फिडलर/कर्ल में कॉपी/पेस्ट कर सकूं। उपरोक्त println(data) लाइन मुझे हेक्साडेसिमल डेटा देता है। कोई विचार?

उत्तर

20

NSData

से एक NSString बनाने
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)! 
println(dataString) 

मैं आगे JSON क्रमबद्धता की सफलता की जाँच करने के

… 
var error : NSError? 
if let data = NSJSONSerialization.dataWithJSONObject(message, options: nil, error: &error) { 
    let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)! 
    print(dataString) 

    // do other stuff on success 

} else { 
    print("JSON serialization failed: \(error)") 
} 

संपादित की सलाह देते हैं:

में स्विफ्ट 2 त्रुटि प्रबंधन बदल गया है

do { 
    let data = try NSJSONSerialization.dataWithJSONObject(message, options:[]) 
    let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)! 
    print(dataString) 

    // do other stuff on success 

} catch { 
    print("JSON serialization failed: \(error)") 
} 

के लिए अद्यतन स्विफ्ट 3

do { 
    let data = try JSONSerialization.data(withJSONObject:message) 
    let dataString = String(data: data, encoding: .utf8)! 
    print(dataString) 

    // do other stuff on success 

} catch { 
    print("JSON serialization failed: ", error) 
} 
+0

कि पूरी तरह से काम किया; कुल कमाल :) धन्यवाद –

+1

... और डीबगिंग उद्देश्यों के लिए उस स्ट्रिंग का उपयोग करें और कुछ भी नहीं। – gnasher729

+0

स्विफ्ट 2 में, var त्रुटि: NSError? यदि डेटा = NSJSONSerialization.dataWithJSONObject (संदेश, विकल्प: शून्य, त्रुटि: और त्रुटि) => त्रुटि के साथ गलत है: "अतिरिक्त उपकरण 'त्रुटि कॉल में"। आप कैसे ठीक करते हैं? – AmyNguyen