Ios 将[UInt8]作为值的swift字典转换为json字符串
我创建了一个swift类,如下所示:Ios 将[UInt8]作为值的swift字典转换为json字符串,ios,json,swift,swifty-json,Ios,Json,Swift,Swifty Json,我创建了一个swift类,如下所示: class Message { var type:String var content:[UInt8] = [UInt8]() init(type:String, content:[UInt8]) { self.type = type self.content = content } func jsonAsString()->String { var dict = [String
class Message {
var type:String
var content:[UInt8] = [UInt8]()
init(type:String, content:[UInt8]) {
self.type = type
self.content = content
}
func jsonAsString()->String {
var dict = [String: AnyObject]()
let mirror = Mirror(reflecting: self)
for (_, attr) in mirror.children.enumerate() {
if let property_name = attr.label as String! {
print("property_name: \(property_name) and value:\(attr.value)")
dict[property_name] = attr.value as? AnyObject
}
}
do {
let jsonData = try NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted)
return (String(data: jsonData, encoding: NSUTF8StringEncoding)?.stringByReplacingOccurrencesOfString(" ", withString: ""))!
} catch {
NSLog("ERROR when parse JSON")
}
return ""
}
}
我想调用函数“jsonAsString”来获取json字符串,但是作为uint8数组的属性“content”没有正确转换。
由于我发现了很多,有人建议更换
var dict=String:具有
var dict=String:Any
但是该方法不支持这种类型的字典
dataWithJSONObject(obj:AnyObject,options:NSJSONWritingOptions)抛出->NSData
在将数组转换为之前,需要将其转换为
[Int]
JSON@Paulw11我定义[UInt8]数组就像定义java字节[],如果我把它转换成[Int],那还可以吗?因为UInt8是更小的Int,你可以在不丢失任何数据的情况下进行转换;如果值大于,则可能无法从Int转换为uint8255@Paulw11如果要更好地将[int8]转换为[int],您只需循环并创建一个新数组,那么最好使用[int]开始,并在适当的地方使用值检查,以确保不会将值>255放入数组