Ios Reddit:swift 3中的JSON解析
我试图找到一种方法来解析reddit上的一些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
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数据结构吗?