Json NSJ序列化为swift字典

Json NSJ序列化为swift字典,json,swift,nsdictionary,swift-dictionary,Json,Swift,Nsdictionary,Swift Dictionary,我有一个json对象需要序列化到字典中。我知道我可以把它连载到一本字典里,但从那以后 在Swift 1.2中,具有本机Swift等价物(NSString、NSArray、NSDictionary等)的Objective-C类不再自动桥接 参考:[ 我宁愿把它放在本地的swift字典里,以避免笨拙的桥接 我不能使用NSJSONSerialization方法,因为它只映射到NSDictionay。将JSON序列化到swift字典的另一种方法是什么?您可以将swift字典直接与NSJSONSerial

我有一个json对象需要序列化到字典中。我知道我可以把它连载到一本字典里,但从那以后

在Swift 1.2中,具有本机Swift等价物(NSString、NSArray、NSDictionary等)的Objective-C类不再自动桥接

参考:[

我宁愿把它放在本地的swift字典里,以避免笨拙的桥接


我不能使用NSJSONSerialization方法,因为它只映射到NSDictionay。将JSON序列化到swift字典的另一种方法是什么?

您可以将swift字典直接与
NSJSONSerialization一起使用

{“id”:42}
示例:

let str = "{\"id\": 42}"
let data = str.dataUsingEncoding(NSUTF8StringEncoding)

let json = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as! [String:Int]

println(json["id"]!)  // prints 42
或使用
任何对象

let json = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as! [String:AnyObject]

if let number = json["id"] as? Int {
    println(number)  // prints 42
}

更新:

如果数据可能为零,则必须使用安全展开以避免错误:

let str = "{\"id\": 42}"
if let data = str.dataUsingEncoding(NSUTF8StringEncoding) {
    // With value as Int
    if let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as? [String:Int] {
        if let id = json["id"] {
            println(id)  // prints 42
        }
    }
    // With value as AnyObject
    if let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as? [String:AnyObject] {
        if let number = json["id"] as? Int {
            println(number)  // prints 42
        }
    }
}

Swift 2.0的更新

do {
    let str = "{\"id\": 42}"
    if let data = str.dataUsingEncoding(NSUTF8StringEncoding) {
        // With value as Int
        if let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:Int] {
            if let id = json["id"] {
                print(id)  // prints 42
            }
        }
        // With value as AnyObject
        if let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject] {
            if let number = json["id"] as? Int {
                print(number)  // prints 42
            }
        }
    }
} catch {
    print(error)
}

让nsDict=nsjsonserialization.whatever();让swiftDict:[String:AnyObject]=nsDict as[String:AnyObject];