Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将[UInt8]作为值的swift字典转换为json字符串_Ios_Json_Swift_Swifty Json - Fatal编程技术网

Ios 将[UInt8]作为值的swift字典转换为json字符串

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

我创建了一个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: 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放入数组