json - Swift 中的 Alamofire : converting response data in usable JSON dictionary

标签 json swift dictionary alamofire type-conversion

我想处理一个 JSON 字符串,该字符串作为使用 Alamofire 进行的 HTTP 调用返回的数据。

This question使用 SwiftyJSON .

但是我想更深入一点,了解如何将响应对象转换成字典。

推理是感觉字典可能是访问响应中 JSON 值的一种简单/容易的方法(而不是必须经历将响应转换为 JSON 对象的过程)。

这是假设 JSON 对象和字典是同一事物(是吗?)。

这是我编写的示例函数:

func question() -> Void{
    let response : DataRequest = Alamofire.request("http://aapiurl", parameters: nil)

    // Working with JSON Apple developer guide:
    // https://developer.apple.com/swift/blog/?id=37

    response.responseJSON { response in
        if let JSON  = response.result.value
        {

            print("JSON: \(JSON)") // Works!

            let data  = JSON as! NSMutableDictionary
            // Casting fails
            // Could not cast value of type '__NSCFArray' (0x19f952150) to 'NSMutableDictionary' (0x19f9523f8).
            print("Data: \(data)")
        }
    }
}

编辑:

JSON 对象似乎是 Any 类型,并且没有以下答案中建议的任何方法。

我试图将其转换为字典,但出现以下错误:

enter image description here

最佳答案

一个 JSON 对象一个字典(或者在顶层可能是一个数组)。

请注意,您不应在 Swift 中使用 NSMutableDictionaryNSDictionary(或 NSArrayNSMutableArray)。

此外,JSON 对象不是工作对象。 JSON 是一种移动数据的方式。它不能用作数据源。

如果您想编辑从 JSON 获得的信息,那么您应该从该 JSON 构建适当的数据对象并使用它们。

如果您随后需要从这个新数据发送 JSON,那么您可以获取数据对象并将它们转换回字典和数组(即 JSON 对象)并发送该数据。

关于json - Swift 中的 Alamofire : converting response data in usable JSON dictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613683/

相关文章:

swift - 从 NSEvent 用户数据中读取字典

python - 函数内的字典值和列表值

c# - 将 2 个字典项聚合到一个对象中

javascript - 使用 AngularJS 循环 JSON 文件时 "Not well-formed"firefox 错误

javascript - 如何获取数组中的 JSON 对象?

c# - getJSON 函数未执行

c++ - std::map 在引用键时的行为

c++ - 对 QJsonArray 进行排序

ios - 以编程方式创建时 UITextView 不滚动

ios - 显示警报时出错