你可以直接使用 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"]!)
或者使用
AnyObject
:
let json = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as! [String:AnyObject]
if let number = json["id"] as? Int {
println(number)
}
![Playground 截图](https://istack.dev59.com/XIB90.webp)
更新:
如果你的数据可能为空,你必须使用安全解包以避免错误:
let str = "{\"id\": 42}"
if let data = str.dataUsingEncoding(NSUTF8StringEncoding) {
if let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as? [String:Int] {
if let id = json["id"] {
println(id)
}
}
if let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as? [String:AnyObject] {
if let number = json["id"] as? Int {
println(number)
}
}
}
Swift 2.0更新
do {
let str = "{\"id\": 42}"
if let data = str.dataUsingEncoding(NSUTF8StringEncoding) {
if let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:Int] {
if let id = json["id"] {
print(id)
}
}
if let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject] {
if let number = json["id"] as? Int {
print(number)
}
}
}
} catch {
print(error)
}
let nsDict = NSJSONSerialzation.whatever(); let swiftDict: [String:AnyObject] = nsDict as [String:AnyObject];
- The Paramagnetic Croissant