2016-11-10 69 views
-1

林試圖使用NSJSONSerialization.dataWithJSONObeject函數將NSDictionary中轉換爲JSONNSJSONSerialization轉換的NSDictionary爲十六進制

代碼:

do{ 
    let jsonData = try NSJSONSerialization.dataWithJSONObject(SerializationHelper.toDictionary(user), options: NSJSONWritingOptions.PrettyPrinted) 

    print(jsonData) 
    } catch { 

     print(error) 
    } 

一切都很好除了jsonData正在打印以十六進制?

<7b0a2020 22706173 73776f72 6422203a 20227465 7374222c 0a202022 75736572 6e616d65 22203a20 22546573 74220a7d> 

當這個十六進制字符串轉換成二進制它INFACT等於JSON對象,但顯然我需要的JSON對象,立竿見影。

任何想法爲什麼這樣?

+1

正如你所說,這些數據是JSON編碼。爲了將它看作一個字符串,你需要通過String(data:jsonData,encoding:.utf8)將數據轉換爲一個字符串,但是如果你打算通過網絡發送JSON,大多數框架只需要數據 – Paulw11

回答

1

你只是一個步驟就可以從溶液中:

夫特3:

let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted) 
let jsonString = String(data: jsonData, encoding: .ascii) 
print("json string = \(jsonString!)") 

夫特2:

let jsonData = try NSJSONSerialization.dataWithJSONObject(dictionary, options: .PrettyPrinted) 
let jsonString = String(data: jsonData, encoding: NSASCIIStringEncoding) 
print("json string = \(jsonString!)") 

兩個示例都應當與DO-包裹趕上