将JSON转换为Swift中的对象
我有一个从服务器获取的json响应,应该将其解析为字典并将其转换为Swift中的NSObjects。我怎样才能做到这一点。将JSON转换为Swift中的对象
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)
object
是可选的。您需要某种展开可选链接或可选出价。
if let object = object {
var responseHeader = object["responseHeader"]
}
或
var responseHeader = object!["responseHeader"]
或
if let responseHeader = object?["responseHeader"] {
// ...
}
等。
是“Dictionary
'responseHeader'是'AnyObject'。它需要被转换为'NSDictionary'或'[String:AnyObject]'。 – Kirsteins 2014-10-09 09:31:01
你可以设置一个断点之前:
确保对象不
VAR responseHeader = [对象 “responseHeader”] //错误包含名为“responseHeader”的键。
否则,你应该让变量responseHeader成为一个可选值。
我不能运行。它在特定行 – 2014-10-09 09:10:29
我写了一个解析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 */ }
我可以推荐https://github.com/SwiftyJSON/SwiftyJSON – 2014-10-09 09:25:17