我尝试使用NSJSONSerialization.dataWithJSONObeject函数将NSDictionary转换为JSON
代码:
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>
当这个十六进制字符串转换为二进制时,它确实等于JSON对象,但显然我需要立即使用JSON对象。
为什么会出现这种情况?
答案 0 :(得分:1)
离解决方案只有一步之遥:
斯威夫特3:
let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)
let jsonString = String(data: jsonData, encoding: .ascii)
print("json string = \(jsonString!)")
Swift 2:
let jsonData = try NSJSONSerialization.dataWithJSONObject(dictionary, options: .PrettyPrinted )
let jsonString = String(data: jsonData, encoding: NSASCIIStringEncoding)
print("json string = \(jsonString!)")
这两个例子都应该用do-catch包装