iOS Swift:使用 AFNetworking 解析响应 json
Posted
技术标签:
【中文标题】iOS Swift:使用 AFNetworking 解析响应 json【英文标题】:iOS Swift: Parsing response json with AFNetworking 【发布时间】:2014-06-16 16:36:27 【问题描述】:所以,我正在使用 AFNetworking 2.0(带有桥接头的 ObjC 框架)在本地服务器上发出一些请求。我已经按照一些教程使用 Swift 对其进行编码。这是代码:
var success = (operation:AFHTTPRequestOperation!, response:AnyObject!) -> Void in
println(response.description)
successBlock(result:response.description)
var failure = (operation:AFHTTPRequestOperation!, response:NSError!) -> Void in
println(response.description)
errorBlock(error:response.description)
var manager = AFHTTPRequestOperationManager()
manager.responseSerializer = AFJSONResponseSerializer();
manager.GET("http://127.0.0.1:8080/api/manufacturer", parameters: nil, success: success, failure: failure)
它检索 json 并成功打印它。响应是这样的:
(
"_id" = 539f0973e3c7f4ab1f6078f5;
name = Manufacturer01;
,
"_id" = 539f18c5e3c7f4ab1f6078f6;
name = Manufacturer02;
)
但是,我无法解析它...我尝试response[0]
来获取第一个元素,但是当我尝试这样做时它会使模拟器甚至 Xcode6 崩溃:(lldb) > po response[0]
。我尝试了一切,我看到的每个示例都说明了如何打印结果,但没有解析每个字段。
当我尝试调试 response
对象时,它看起来像这样:
value = Some
Some = (instance_type = Builtin.RawPointer = 0x0b240710 -> 0x00bc5da0 (void *)0x00bc5db4: __NSCFArray)
有什么线索吗?提前致谢!
【问题讨论】:
我也有这个问题。我到底如何将 JSON 字典值分配给字符串变量?我有一个 varvar serverID:String?
并且在尝试 self.serverID = responseObject["server_id"] as? String
时它会导致 Xcode 崩溃
我用这种方法取得了成功:***.com/questions/24259756/…
@heycarsten 不幸的是,我在模拟器上得到 EXC_BAD_INSTRUCTION,在设备上使用该代码得到 EXC_BREAKPOINT。 :(
@Sean 好像会自动转换为NUMBER TYPE,而不是String!!!我有同样的问题,我试图找到一种方法来转换为字符串。
您有什么解决方案吗?
【参考方案1】:
试试这个
if let responseArray = response as? NSArray
let firstElement = responseArray[0]
// do something with the first element
【讨论】:
【参考方案2】:我认为您的问题在于将其发送回 successBlock。由于检索到的信息没有在描述对象中正确呈现。
var jsonArrayDictionary = response.result.value as? [[String: Any]]
for item in jsonArrayDictionary
dump(item["_id"] as? String)
dump(item["name"] as? String)
应该可以的。
【讨论】:
【参考方案3】:您的示例响应不是有效的 JSON。
如果您的示例是一个数组,JSON 将使用方括号而不是括号,字段名称使用引号和冒号而不是等号。例如:
[
"_id": 1234,
"name": "foo bar"
,
"_id": 12122,
"name": "baz"
]
另见 JSON 短绒之一,例如:jsonlint.com
【讨论】:
可能是调试器中打印的字典内容。 @mAu 是对的。 json 结构良好,即调试器表示。以上是关于iOS Swift:使用 AFNetworking 解析响应 json的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:使用 AFNetworking 解析响应 json
如何在 Xcode 8 和 iOS 10 中使用 AFNetworking 类和 Swift 3 上传图像
swift iOS - AFNetworking扩展 - 使用网址取消请求,需要https://gist.github.com/danielgomezrico/ae53fae471168dde6c
swift iOS - AFNetworking扩展 - 使用网址取消请求,需要https://gist.github.com/danielgomezrico/ae53fae471168dde6c
swift iOS - AFNetworking扩展 - 使用网址取消请求,需要https://gist.github.com/danielgomezrico/ae53fae471168dde6c