Ios Reddit:swift 3中的JSON解析

Ios Reddit:swift 3中的JSON解析,ios,json,swift,parsing,swift3,Ios,Json,Swift,Parsing,Swift3,我试图找到一种方法来解析reddit上的一些Json数据,并在表视图中显示信息。(). 到目前为止,我的代码是这样的: var names: [String] = [] var comment: [String] = [] override func viewDidLoad() { super.viewDidLoad() let url = URL(string: "https://api.reddit.com") do{ let re

我试图找到一种方法来解析reddit上的一些Json数据,并在表视图中显示信息。(). 到目前为止,我的代码是这样的:

var names: [String] = []
var comment: [String] = []

override func viewDidLoad() {
        super.viewDidLoad()
let url = URL(string: "https://api.reddit.com")
        do{
            let reddit = try Data(contentsOf: url!)
            let redditAll = try JSONSerialization.jsonObject(with: reddit, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String : AnyObject]
            if let theJSON = redditAll["children"] as? [AnyObject]{
                for child in 0...theJSON.count-1 {
                    let redditObject = theJSON[child] as! [String : AnyObject]

                    names.append(redditObject["name"] as! String)
                }
            }
            print(names)
        }

        catch{
            print(error)
        }
    }

//Table View
func numberOfSections(in tableView: UITableView) -> Int {
        return 1

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return names.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)

        //Configure cells...
        cell.textLabel?.text = names[indexPath.row]
        cell.detailTextLabel?.text = comments[indexPath.row]


        return cell
    }
我知道,事实上,信息实际上是通过“redditALL”常量传递的,但我不确定在JSONSerialization之后我做了哪些不正确的事情。
另外,如果有某种链接可以帮助我更好地理解swift中的JSON解析,我将不胜感激。谢谢。

swift(基础)中的JSON解析非常简单。调用
JSONSerialization.jsonObject(with:)
并返回一个“对象图”。通常是包含其他对象的字典或数组。为了将结果转换为适当的类型并遍历对象图,您必须了解所获取数据的格式。如果抛出错误,代码将无法按预期运行。您应该向我们展示您的JSON数据。JASON和代码之间可能存在不匹配。

首先,不要使用
数据(contentsOf:)
URL
获取
JSON
,因为它会阻止
主线程,而不是使用
URLSession

现在要检索您的
子项
数组,您需要首先访问
数据
字典,因为
子项
在字典中。所以试着这样做

let url = URL(string: "https://api.reddit.com")
let task = Session.dataTask(with: url!) { data, response, error in
    if error != nil{
        print(error.)
    }
    else
    {
        if let redditAll = (try? JSONSerialization.jsonObject(with: reddit, options: []) as? [String : Any],
           let dataDic = redditAll["data"] as? [String:Any],
           let children = dataDic["children"] as? [[String:Any]] {

              for child in children {
                  if let name = child["name"] as? String {
                       names.append(name)
                  }
              }
              DispatchQueue.main.async {
                   self.tableView.reloadData()
              }
        }
    }
}
task.resume()

你能展示你的json数据结构吗?