如何解析JSON文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我有一个JSON文件,想要解析和使用表视图中的对象列表。任何人都可以共享代码来快速解析JSON文件。

提问于
用户回答回答于

不可能更简单:

import Foundation

var error: NSError?
let jsonData: NSData = /* get your json data */

let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary
用户回答回答于

如何调用Web服务并在Swift Check IT中获得响应

制作API请求

var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)

准备回应

声明一个数组如下

var data: NSMutableData = NSMutableData()

收到回复

1.

func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
   // Received a new request, clear out the data object
   self.data = NSMutableData()
}

2.

func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
   // Append the received chunk of data to our data object
   self.data.appendData(data)
}

3.

func connectionDidFinishLoading(connection: NSURLConnection!) {
   // Request complete, self.data should now hold the resulting info
   // Convert the retrieved data in to an object through JSON deserialization
   var err: NSError
   var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

   if jsonResult.count>0 && jsonResult["results"].count>0 {
      var results: NSArray = jsonResult["results"] as NSArray
      self.tableData = results
      self.appsTableView.reloadData()

   }
}

当NSURLConnection接收到响应时,我们可以期待didReceiveResponse方法代表我们进行调用。在这一点上,我们简单地通过说self.data = NSMutableData()重置我们的数据,创建一个新的空数据对象。

连接完成后,我们将开始接收方法didReceiveData中的数据。这里传递的数据参数是我们所有的多汁信息来自哪里。我们需要坚持每个进来的块,因此我们将它附加到我们之前清除的self.data对象。

最后,当连接完成并收到所有数据时,connectionDidFinishLoading被调用,我们准备好在我们的应用程序中使用这些数据。万岁!

此处的connectionDidFinishLoading方法使用NSJSONSerialization类将原始数据转换为有用的Dictionary对象,方法是反序列化来自Url的结果。

扫码关注云+社区