【发布时间】:2016-05-14 05:38:43
【问题描述】:
我有以下代码通过 API 获取 json 数据。
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
// print("Response: \(response)")
// print("DATA: \(data)")
if data != nil {
do {
print( NSString(data: data!, encoding: NSUTF8StringEncoding))
if let jsonResults = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSArray {
print("\n\nThe return JSON looks like this: \(jsonResults)\n\n")
}
} catch {
print("\n\nProblem getting JSON back from GET API.\n\n")
}
} else {
print("API Not Available") // data was nil
}
}) // task
task.resume()
NSString 的“打印”显示了我眼中的有效 JSON。控制台显示为:
Optional({"id":15,"user_id":11,"breed_id":593,"gender":"Male","age_years":5,"tally":{"count":1246,"struvite":716,"calcium_oxalate":388,"urate":217,"calcium_phosphate":30,"silica":21,"compound":41},"created_at":"2016-02-04T08:26:14.719-06:00","updated_at":"2016-02-04T08:26:14.719-06:00"})
但是,“if let jsonResults =" 语句确实执行成功(没有打印出 jsonResults)并且 catch 也没有执行 - 所以它似乎是一个静默错误。
一个非常相似的调用适用于 API 的另一部分。唯一的大区别是此调用的 JSON 返回中的“计数”是嵌套的。
欢迎提出任何建议。
【问题讨论】:
-
您在代码中粘贴的示例数据是字典,而不是数组。您需要将其转换为字典类型,例如
[String: Anyobject]由下面的dzk 建议。
标签: ios ruby-on-rails json swift api