wm.*_*1us 1 xcode nsdata swift swift3
我写了一小段常用代码,但发现我的代码没有从这行代码返回服务器的十六进制数据:
let currentData = try! Data(contentsOf: fullURL!)
print("currentData=", currentData)
Run Code Online (Sandbox Code Playgroud)
并输出:
currentData= 24419 bytes
Run Code Online (Sandbox Code Playgroud)
我试图使用Leo的评论链接:
stackoverflow.com/q/39075043/2303865
我得到一些没有空格的十六进制数据,验证器(http://jsonprettyprint.com)无法识别它并返回null.
让我们尝试在这里理清不同的问题并总结上述评论.
该description方法Data只打印一个简短的摘要"NNN字节",而不是一个十六进制转储的NSData那样:
let o = ["foo": "bar"]
let jsonData = try! JSONSerialization.data(withJSONObject: o)
print(jsonData) // 13 bytes
Run Code Online (Sandbox Code Playgroud)
您可以通过桥接NSData(源)获得十六进制转储:
print(jsonData as NSData) // <7b22666f 6f223a22 62617222 7d>
Run Code Online (Sandbox Code Playgroud)
或者编写一个扩展方法Data(如何在swift中将数据转换为十六进制字符串).
但这实际上不是真正的问题.JSON验证器需要JSON作为字符串,而不是十六进制转储(源):
print(String(data: jsonData, encoding: .utf8)!) // {"foo":"bar"}
Run Code Online (Sandbox Code Playgroud)
要将JSON数据反序列化为对象,您不需要上述任何内容,只需调用即可
let obj = try JSONSerialization.jsonObject(with: jsonData)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |