使用 swift 3 访问 JSON 中的值

Posted

技术标签:

【中文标题】使用 swift 3 访问 JSON 中的值【英文标题】:Accessing values in JSON using swift 3 【发布时间】:2017-11-24 21:58:43 【问题描述】:

我正在尝试使用https://api.github.com/users 获取前 30 个 GitHub 用户并将其添加到获取的用户列表中。对于每个用户;显示他们的用户名头像仓库数量

选择用户后,我需要打开另一个屏幕,其中包含他们所有存储库的列表。

如何按照这种 JSON 格式访问 GitHub API 中的嵌套 URL(“repos_url”)?


    "login": "mojombo",
    "id": 1,
    "repos_url": "https://api.github.com/users/mojombo/repos"
 

【问题讨论】:

How to parse a JSON file in swift?的可能重复 【参考方案1】:
// don't forget 
import Alamofire
import SwiftyJSON

// initialise variables

var fetchResult = [[String:AnyObject]]()
struct User
var name:String?
var id:Int?
var repo_url:String

init(name:String,id:Int,repoURL:String)

self.name = name
self.id = id
self.repo_url = repoURL




let user = [User]


fun getData()

    Alamofire.request("https://api.github.com/users").responseJSON  (responseData) -> Void in
                if((responseData.result.value) != nil) 
                    let response = JSON(responseData.result.value!)
                    print(response)

                    if let resData = response.arrayObject 

                      self.fetchResult = resData as! [[String:AnyObject]]

                       print(self.fetchResult)
                    

                    for item in self.fetchResult 

                        print(item)

                       guard let login = item["login"] as! String else return

                       guard let id = item["id"] as! Int else return

                       guard let repos_url = item["repos_url"] as! String else return

                        let gitUser = User(name: login , id: id, repoURL: repos_url)
                        self.user.append(gitUser)
                    

                
              if self.user.count>0
             self()
    

一旦你在 tableView 中选择了一行。 使用

在 didSelect 中获取所选项目
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) 

    let selected = user[indexPath.row]


   let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewController = 
    storyBoard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
    newViewController.data = selected
    self.navigationController?.pushViewController(newViewController, animated: true)

    

在 SecondViewController 中,您可以访问选定的数据集。

【讨论】:

感谢您的支持,但您的项目未提供有关用户拥有多少个存储库的信息。它应该来自字典:“repos_url”:“api.github.com/users/mojombo/repos”。我的问题是我应该如何访问这些数据?

以上是关于使用 swift 3 访问 JSON 中的值的主要内容,如果未能解决你的问题,请参考以下文章

Swift 和 Alamofire - 访问条件语句的 JSON 值

SwiftyJson Swift 3 无法访问 JSON 中的字符串

如何将json对象的值设置为swift 3中tableView中动态呈现的视图中的标签?

使用 Alamofire 和 Swift 返回嵌套 JSON 数组中的值

从mysql中的值中选择

如何使用从 Swift 3 中的滑块中选择的 JSON 数据更新 tableviewcell?