繁体   English   中英

无法获取JSON的值-Swift

[英]Unable to get the value of JSON - Swift

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

Json回应:

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

快速解析:

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
     }
}

杰森解析

 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的值。 它总是返回nil。 我如何获得价值。

另外,我设置了一个断点并尝试打印t1的值。 但是Xcode一直崩溃。 为什么?

我认为这里的主要问题只是快速访问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

这只是向您展示如何快速访问JSON对象。 当然,您可以根据需要进行更改,以删除不需要的“可选链接”。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM