通过 NSData 和数据的不同控制台输出数据(Xcode 8 beta 6,Swift 3)

Different console output data via NSData and Data (Xcode 8 beta 6, Swift 3)

我写了一小段常用代码,但发现我的代码不会 return 使用这行代码从服务器获取十六进制数据:

let currentData = try! Data(contentsOf: fullURL!)
print("currentData=", currentData)

并且输出:

currentData= 24419 bytes

我尝试使用 Leo 的评论 link:

计算器。com/q/39075043/2303865

我得到了一些没有空格的十六进制数据,验证器 (http://jsonprettyprint.com) 无法识别它并且 return 为空。

我们试着梳理一下这里的不同问题,总结一下 以上评论。

description方法 Data 只打印一个简短的摘要 "NNN bytes",而不是十六进制转储 正如 NSData 所做的那样:

let o = ["foo": "bar"]
let jsonData = try! JSONSerialization.data(withJSONObject: o)

print(jsonData) // 13 bytes

您可以通过桥接到 NSData ():

来获取十六进制转储
print(jsonData as NSData) // <7b22666f 6f223a22 62617222 7d>

或为 Data () 编写扩展方法。

但这实际上不是真正的问题。 JSON 验证器需要 JSON 作为 字符串, 而不是十六进制转储 ():

print(String(data: jsonData, encoding: .utf8)!) // {"foo":"bar"}

并且要将 JSON 数据反序列化为您需要的对象 none 以上,只需调用

let obj = try JSONSerialization.jsonObject(with: jsonData)