【问题标题】:Swift Alamofire JSON response has bracketsSwift Alamofire JSON 响应有括号
【发布时间】:2016-02-04 13:44:33
【问题描述】:

我正在尝试使用来自 Alamofire 请求的 Alamofire 处理 JSON 响应:

Alamofire.request(.POST, dbURL, parameters: ["username": username, "password": password]) .responseJSON { response in ... }

我正在阅读回复

let JSONResponse = response.result.value!

这个返回的值

({ keyOne = 2; keyTwo = 4; keyThree = 2; keyFour = 6;})

并从中获取数据,

JSONResponse.valueForKey("exampleKey")

我得到的问题是这不返回简单的数据,它返回了这个(响应都是数字,但由于显而易见的原因我不能使用 integerForKey):

(2)

(4)

(2)

(6)

如何在没有括号的情况下从此函数获取、读取和/或保存数据? 我尝试使用stringByReplacingOccurencesOfString() 蛮力删除括号,但这很丑陋,而且一开始就不起作用。

【问题讨论】:

  • 实际的 json 响应是什么?可以贴在这里吗?
  • 补充到 Pradeep 的问题,您是否尝试过反序列化 JSON?
  • 这在swift中称为可选。
  • 反序列化 JSON 无法正常工作。我添加了完整的 JSON 响应。
  • 您在哪里看到这些括号出现?是在调试时,还是打印到控制台时,还是……?我想知道您是否只是在调试器/控制台中看到这些表明您正在处理未包装的 Optional。

标签: json swift alamofire


【解决方案1】:

如果你的json是这个{ "keyOne":2, "keyTwo":4, "keyThree":2, "keyFour":6 } 那么这段代码应该为你返回正确的 int 值。

if let jsonURL = NSBundle.mainBundle().URLForResource("sample", withExtension: "json")
{
    Alamofire.request(.GET, jsonURL, parameters:nil) .responseJSON {
        response in
        if let JSONResponse = response.result.value as? [String:Int]
        {
            print(JSONResponse)
            if let val = JSONResponse["keyOne"] {
            print ("val = \(val)")
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2014-11-15
    相关资源
    最近更新 更多