2

我是 Objective-c 的新手。我想向 API 发出 HTTPRequest。这行得通,我在一个 NSData 对象中得到我的响应。此响应是 json 响应。如何解析我的响应以获取带有键:值格式的字典?

我使用此代码获取数据:

  data = [NSURLConnection sendSynchronousRequest: req
                             returningResponse: nil
                                         error: nil];

谢谢

4

1 回答 1

4

使用NSJSONSerialization (iOS5+) 将 JSON 字符串转换为 Cocoa 对象(NSDictionary在您的情况下),反之亦然。

PS:如果您还需要支持 5.0 之前的 iOS 版本,即NSJSONSerialization不可用的地方,则有第三方库,JSONKit例如。然后,您可以始终JSONKit在 iOS4 和 iOS5 上使用,或者您可以在运行时测试NSJSONSerialization可用性并在可用时使用它(但JSONKit如果没有则回退)。

(有关跨 SDK 开发的更多详细信息,例如制作和应用程序与 iOS4 兼容但能够在可用时使用 iOS5 类,请参阅SDK 兼容性指南


顺便说一句,您应该(必须)避免使用同步 URL 请求。这将阻塞您的线程,直到它收到来自网络的响应。如果您在主线程上执行它,您的整个 UI 将被冻结,直到您收到响应,这在移动环境中可能需要几秒钟(您并不总是拥有最佳的网络覆盖范围)。

更喜欢:

  • 使用使用委托的 NSURLConnection 的 API(有关详细信息,请参阅URL 加载系统编程指南),
  • 或者使用新引入的sendAsynchronousRequest:queue:completionHandler:方法(iOS5+)在后台 NSOperation 中执行请求,
  • 或者使用一些第三方框架,这将使您更轻松地处理请求(我推荐使用AFNetworking,它也非常适合与 WebServices 通信并自动将响应转换为 JSON 对象,使用块来异步处理响应并使您的代码更容易编写和理解,等等)
于 2012-09-12T21:48:09.440 回答