【问题标题】:Unable to get the value of JSON - Swift无法获取 JSON 的值 - Swift
【发布时间】:2014-11-11 09:10:42
【问题描述】:

我试图从 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
     }
}

Json 解析

 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 不断崩溃。为什么?

【问题讨论】:

  • 我怀疑“Xcode 不断崩溃”。是不是你的代码一直在崩溃?
  • 我试图在控制台(po t1)中打印 t1 的值。 Xcode 退出并在对话框中抛出错误消息,带有两个选项(确定和重新打开)
  • 同样的代码对我有用,你是如何解析 JSON 的?
  • 请在此处检查您的 JSON 结果,然后继续。 jsonviewer.stack.hujsoneditoronline.org 会帮助你。
  • 我将 t 的值作为 NSDictionary(包含 3 个键值对)。但是 t1 返回 nil

标签: ios json swift


【解决方案1】:

我认为这里的主要问题是仅在 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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-04-05
        相关资源
        最近更新 更多