无法获得JSON的值 - Swift

时间:2014-11-11 09:10:42

标签: ios json swift

我试图从json响应中获取“种子”的值。但我没有了。

Json回复:

{
        "response": {
            "params": {
                "rows": "20",
                "defType": "abc",
                "seed": "381786611"
            }
        }
    }

Swift Parsing:

if let responseHeader:AnyObject = object?["response"] as? NSDictionary {
    if let t = (responseHeader["params"] as? NSDictionary){
       let t1 = t["seed"] as? String
       println("result is \(t1)") // This returns nil
     }
}

Json Parsing

 func processJsonToDictionary(object:AnyObject?) -> AnyObject?{
        if object != nil {
            if let data: AnyObject = object {
                var parseError: NSError?

                var jsonResult = NSJSONSerialization.JSONObjectWithData(object as NSData!, options: NSJSONReadingOptions.MutableContainers, error: &parseError) as? NSDictionary
                if(parseError != nil){
                    return parseError
                }
                else{
                    return jsonResult
                }
            }
        }
        return nil
    }

我无法获得t1的值。它总是返回零。 我怎样才能获得价值。

另外,我放了一个断点并尝试打印t1的值。但Xcode继续崩溃。为什么?

3 个答案:

答案 0 :(得分:0)

我认为这里的主要问题只是在swift中访问JSON对象。

var error: NSError?
let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary
let resp = jsonDict["response"] as? NSDictionary
let params = resp?["params"]?["seed"]
let seed = params!! as NSString

这只是为了向您展示如何在swift中访问JSON对象。您可以根据需要更改它,以删除不需要的可选链接。

答案 1 :(得分:0)

为了在Swift中轻松进行JSON操作,您可以尝试使用this小库。看起来很简单,你可以这样做:

var dictionary: [String: AnyObject]!
if let json = NKJSON.parse(yourNSDataObject) {
    dictionary <> json[NKJSON.rootKey]
}

答案 2 :(得分:-1)

首先确认您获得的响应是​​json格式或字符串格式。 对于json解析,您可以使用swifty json pod