我想处理一个 JSON 字符串,该字符串作为使用 Alamofire 进行的 HTTP 调用返回的数据。
但是我想更深入一点,了解如何将响应对象转换成字典。
推理是感觉字典可能是访问响应中 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 类型,并且没有以下答案中建议的任何方法。
我试图将其转换为字典,但出现以下错误:
最佳答案
一个 JSON
对象是一个字典(或者在顶层可能是一个数组)。
请注意,您不应在 Swift 中使用 NSMutableDictionary
或 NSDictionary
(或 NSArray
或 NSMutableArray
)。
此外,JSON 对象不是工作对象。 JSON 是一种移动数据的方式。它不能用作数据源。
如果您想编辑从 JSON 获得的信息,那么您应该从该 JSON 构建适当的数据对象并使用它们。
如果您随后需要从这个新数据发送 JSON,那么您可以获取数据对象并将它们转换回字典和数组(即 JSON 对象)并发送该数据。
关于json - Swift 中的 Alamofire : converting response data in usable JSON dictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613683/