我有一个从服务器获取的json响应,它应该被解析为字典并将其转换为Swift中的NSObjects。我怎么能这样做。
func convertJSONToObjects(object:Dictionary<String,AnyObject>?) -> CommonResponse{
var response:CommonResponse;
if(object != nil){
response = CommonResponse()
var responseObject = object //It is dictionary
var responseHeader = object["responseHeader"] //error
response.status = responseHeader["status"] as Int //error
//response.status is Int
}
return response
}
var parsedJson = NSJSONSerialization.JSONObjectWithData(object as NSData, options: NSJSONReadingOptions.MutableContainers, error: &parseError) as NSDictionary
调用函数
convertJSONToObjects(parsedJson)
答案 0 :(得分:0)
你可以在之前设置一个断点:
var responseHeader = object [&#34; responseHeader&#34;] //错误
确保该对象确实包含一个名为&#34; responseHeader&#34;的密钥。
否则你应该让变量responseHeader成为一个Optional值。
答案 1 :(得分:0)
object
是可选的。您需要某种解包可选链接或可选出价。
if let object = object {
var responseHeader = object["responseHeader"]
}
或
var responseHeader = object!["responseHeader"]
或
if let responseHeader = object?["responseHeader"] {
// ...
}
等等。
答案 2 :(得分:0)
我编写了一个解析JSON文本并将其映射到Swift结构/类的类。
let p = CutePossumParser(json: json)
let model = Possum(
name: p.parse("name", miss: ""),
home: Address(
planet: p["home"].parse("planet", miss: "")
)
)
if !p.success { /* mapping failed */ }