在Swift中将JSON转换为对象

时间:2014-10-09 08:54:34

标签: ios json swift

我有一个从服务器获取的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)

3 个答案:

答案 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 */ }

https://github.com/exchangegroup/cute-possum-parser