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 数据 + 解析 的相关文章

  • 从xcode上触摸屏的坐标获取ImageView的像素数据?

    单击视图并从视图内的图像获取正确的像素数据似乎存在问题 func handleTap gestureRecognizer UIGestureRecognizer print You tapped at gestureRecognizer l
  • 核心数据:重命名属性,而不会导致用户及其当前数据出现问题

    我只想为我的应用程序的新版本重命名并在表上添加属性 并且如果应用程序已安装 我想保留数据 首先我只是设置选项 let options NSMigratePersistentStoresAutomaticallyOption true NSI
  • 为什么java中LinkedList没有initialCapacity?

    我想知道为什么LinkedList没有initialCapacity 我知道什么时候使用ArrayList什么时候LinkedList 定义集合最终大小的好习惯是 List
  • 在Unity游戏中保存数据的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道 在 Unity 游戏中保存数据的最佳方式是什么 JSON 如果是这样 怎么办 谢谢 以下是一些不同的方式和方法保存 Unit
  • 如何在 Django REST Framework 中序列化“对象列表”

    我需要一个序列化器来完成这样的事情 items 12 name item 1 66 name item 2 我应该如何声明我的序列化器才能得到这样的东西 这是否是一个有效的 JSON 还是应该如下所示 items name item 1 i
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • dart中解析对象(不支持的操作:无法添加到固定长度列表)

    我有一个用户对象 当用户登录 注册时 该对象保存到云 Firestore 数据库中 因此 当用户登录时 将从数据库中检索用户对象 并且一切正常 直到我尝试对列表 usersProject 执行 添加 操作 Add the new proje
  • 在 VB.Net 中将字节数组转换为整数

    我想知道在 vb net 中将字节数组 长度 4 转换为整数的最佳方法是什么 我知道 BitConverter 但执行函数调用来执行应该可以通过复制 4 字节内存来完成的操作似乎相当浪费 同样 将单 双精度数从二进制表示形式转换为单 双精度
  • 从数组中删除空白元素

    当我从 ruby on Rails 表单中保存多个选择时 它似乎在前面添加了一个空白元素 我该如何删除它 该字段为 selected player utf8 gt authenticity token gt H8W7qPBezubyeU0a
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • UIView 圆角 - Swift 2.0?

    我会尝试将一些项目更新到 Swift 2 0 我有一个视图 左上角有一个圆角 在 Swift 没有警告 没有错误 只是没有圆角 这就是它在 Swift let maskPath UIBezierPath roundedRect conten
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • 使用 powershell 将 XML 转换为特定的 JSON 结构

    需要有关将 xml 转换为特定 json 结构的帮助 XML 看起来像这样

随机推荐

  • 递归数据类型(如 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