macOS - 从原始 Github 获取 JSON 数据 + 解析

2024-01-05

我正在尝试从 a 获取 jsongithubusercontent (URL: https://raw.githubusercontent.com/nacrt/SkyblockClient-REPO/main/files/mods.json https://raw.githubusercontent.com/nacrt/SkyblockClient-REPO/main/files/mods.json)到一个 Swift 文件,然后将其转换为我可以操作的东西,例如,使用enabled(如下)选中/取消选中复选框。 所讨论的 JSON 实际上是一个 JSON 数组,这是主要问题。我不确定下面的代码是否有效,因为我还没有导入 JSON。

到目前为止,我发现了这个:

struct ModsJSON: Decodable {
    let id: String
    let display: String
    let description: String
    let url: String
    let config: Bool?
    let enabled: Bool
    let hidden: Bool
    let icon: String
    let categories: Array<String>
    let actions: Array<OptionAction>?
    let warning: ActionWarning?
}

let jsonData = JSON.data(using: .utf8)! //JSON being the imported json
let mods_json: [ModsJSON] = try! JSONDecoder().decode([ModsJSON].self, from: jsonData)

我是 swift 的初学者,我意识到这应该很容易,但我在任何地方都找不到实际的答案。

macOS Big Sur - 最新的 Swift 和 Xcode 版本。


对于初学者来说这并不容易,你必须使用异步加载数据URLSession.

JSON 字典中的某些键丢失,因此您必须将更多结构成员声明为可选。

键的类型actions and warning丢失了,我把它们注释掉了,代码没有它们也能工作

struct Mod: Decodable {
    let id: String
    let display: String
    let description: String
    let url: String?
    let config: Bool?
    let enabled: Bool?
    let hidden: Bool?
    let icon: String?
    let categories: [String]?
    // let actions: Array<OptionAction>?
    // let warning: ActionWarning?
}

let url = URL(string: "https://raw.githubusercontent.com/nacrt/SkyblockClient-REPO/main/files/mods.json")!

let task = URLSession.shared.dataTask(with: url) { (data, _, error) in
    if let error = error { print(error); return }
    do {
        let result = try JSONDecoder().decode([Mod].self, from: data!)
        print(result)
    } catch { print(error) }
}
task.resume()

您的代码中有一些不好的做法:

  • 代替try!始终使用do - catch如果可能发生错误则阻止。
  • Swift 中的变量名是lowerCamelCase而不是snake_case.
  • 不要注释编译器可以推断的类型。
  • 数组中使用的结构应以单数形式命名(Mod)和JSON后缀毫无意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

macOS - 从原始 Github 获取 JSON 数据 + 解析 的相关文章

随机推荐

  • 递归数据类型(如 Avro 架构中的树)

    Reading https avro apache org docs current spec html https avro apache org docs current spec html它说模式必须是以下之一 一个 JSON 字符串
  • 由json私钥文件(ServiceAccount)创建的GoogleCredential - 如何设置用户来模拟?

    刚刚开始使用 Google API 在我的 Google Cloud Platform 帐户中 我创建了一个用于域范围委派的服务帐户 我为此服务帐户保存了 json 格式的私钥文件 在我的测试应用程序中 我正在创建一个 GoogleCred
  • 如何获取magento2中的当前类别?

    我怎样才能获得当前类别magento2 我想在自定义 phtml 文件中获取类别名称和类别 id 上面的内容似乎是正确的 但我认为直接跳到注册表并不是最好的方法 Magento 提供了一个已经封装了该功能的图层解析器 请参阅目录插件中的 T
  • @AspectJ。 scala(也可能是 java)lambda 的切入点

    是否可以为 scala lambda 提供 poitcut 如果我没有记错的话 scala lambdas 现在的编译方式与 java lambdas 相同 所以我认为我的问题也适用于 java lambdas 但我不确定 这是代码 基本上
  • 画笔范围未按预期工作

    由于某种原因 我的图表没有像我希望的那样被刷掉 Brush extent 的域似乎正常工作 但条形图都飞出了页面 有人可以告诉我这里出了什么问题吗 function doBrush x domain brush empty x2 domai
  • 如何改变UINavigationBar的颜色?

    我想改变颜色UINavigationBar 将从图像中获取颜色 尝试将对象设置为导航栏的子视图 设置色调颜色属性或使用图像 UINavigationController controller UINavigationController a
  • 从根部高效计算多项式系数

    我有一个单调多项式的根 即 p x x x 1 x x n 我需要系数 a n a 0 p x x n a n 1 x n 1 a 0 有谁知道一个计算效率高这样做的方法 如果有人知道 C C 实现 这实际上是最好的 我已经看过 GSL 但
  • 如何为html中的多个图像创建搜索功能

    我是构建 html 网站的新手 我的文件夹中有很多 gif 动画 我想在javascript中创建一个搜索功能 以便它可以搜索图像的关键字 如果图像存在 则可以显示图像 如果不存在 则显示请输入另一个关键字
  • 在 tsibble 中设置索引

    您是否曾经回顾过自己的旧问题并感到有点尴尬 我刚刚做到了 现在我也做到了 在某些时候我可能会对这个有同样的感觉 我正在尝试将我的预测工作转移到fable 在此过程中我尝试使用tsibble 以前与一个ts对象我只是设置了开始年份和频率 现在
  • 我可以使用自动布局为横向和纵向方向提供不同的约束吗?

    当设备旋转时是否可以改变约束 如何实现这一目标 一个简单的例子可能是两张图像 在纵向时 一张放在另一张上面 但在横向时 它们并排 如果这是不可能的 我还能如何完成这个布局 我正在代码中构建我的视图和约束 而不是使用界面生成器 Edit 运用
  • 您可以在 ASP.NET-MVC 中的每个操作上应用 ActionFilter

    我想申请一个动作过滤器 http weblogs asp net rashid archive 2008 03 28 asp net mvc action filter caching and compression aspx在 ASP N
  • Nodejs - .node_libraries/ 用于 www-data

    我想在我的 PHP 应用程序中使用 uglifyjs https github com mishoo UglifyJS UglifyJS 是使用 Nodejs 构建的 因此我的 homedir home peppe 中需要一个 node l
  • 成为一名合格的 Scala 程序员是否需要成为一名合格的 Java 程序员? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • URL 的 Path.Combine 吗?

    路径组合 https msdn microsoft com en us library system io path combine 28v vs 110 29 aspx很方便 但是 NET 框架中有类似的功能吗URLs http en w
  • 从存储过程 catch 块处理死锁重试是个好主意吗

    据我了解 不可能完全防止事务死锁 从应用程序代码的角度来看 我希望事务永远不会失败 我已经看到这种模式用于 Microsoft SQL 我想知道这是否是一个好主意 DECLARE retry tinyint SET retry 5 WHIL
  • 将天数添加到特定日期

    许多例子都是关于在这一天添加天数 但是 如果我有不同的起始日 该怎么办 例如 不起作用 day 2010 01 23 add 7 days to the date above NewDate Date day strtotime 7 day
  • 将 R 数据作为 csv 直接写入 s3

    我希望能够将数据直接从 AWS s3 中写入存储桶data frame data table对象作为 csv 文件 而无需先使用 AWS CLI 将其写入磁盘 obj to write s3 lt data frame cbind x1 r
  • 如何在 Python 3 中将 PyCairo 表面转换为 OpenCV numpy 并返回

    我想将 OpenCV 图像转换为 PyCairo 进行一些操作 绘图等 并将其转换回 OpenCV 你知道该怎么做吗 简单的例子就足够了 谢谢 正如 PyCairo 中所指定的测试代码 https github com dalemberti
  • php mysql_insert_id 多行?

    是否可以从插入多行的查询中获取自动递增的 id 例如 INSERT INTO 表 col1 col2 VALUES 1 2 3 4 5 6 或者 有没有办法在不向表中插入任何内容的情况下找到下一个自动增量值 Thanks 据我所知 auto
  • macOS - 从原始 Github 获取 JSON 数据 + 解析

    我正在尝试从 a 获取 jsongithubusercontent URL https raw githubusercontent com nacrt SkyblockClient REPO main files mods json htt