我写了一小段常用代码,但发现我的代码不会用以下代码行从服务器返回十六进制数据:
let currentData = try! Data(contentsOf: fullURL!)
print("currentData=", currentData)
输出:
currentData= 24419 bytes
我试着使用Leo的评论链接:
stackoverflow.com/q/39075043/22303865
我得到了一些没有空格的十六进制数据和验证器(http://jsonprettyprint.com)无法识别它并返回null。
让我们尝试在这里整理不同的问题,并总结以上评论。
description
方法的Data
只打印一个简短的摘要"NNN字节",而不是十六进制转储正如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
的扩展方法(如何在swift中将数据转换为十六进制字符串(。
但这实际上并不是真正的问题。JSON验证器需要JSON是字符串,不是十六进制转储(源(:
print(String(data: jsonData, encoding: .utf8)!) // {"foo":"bar"}
并且要将JSON数据反序列化为您需要的对象以上都没有,只需调用
let obj = try JSONSerialization.jsonObject(with: jsonData)