如何使用 Codable 解析此 JSON?

2024-05-08

我一直在尝试从我的中解析这个对象JSON并不断收到此错误:

“错误:类型不匹配(Swift.Array, Swift.DecodingError.Context(codingPath: [], debugDescription: “本应解码数组,但找到了字典。”, 底层错误:nil))\n"

如果我从这里删除阵列支架let video = try decoder.decode([Content].self, from: data)然后得到一个错误说:

“错误:keyNotFound(CodingKeys(stringValue:“描述”,intValue:nil),Swift.DecodingError.Context(codingPath:[],debugDescription:“没有与键关联的值 CodingKeys(stringValue:\“描述\”,intValue:nil) ) (\"描述\").",underlyingError: nil))\n"

我怎样才能让它消失?这是我的JSON和代码:

    JSON: 

        > {     "content": [{
        >              "description": "Hello",
        >              "category": "World wides",
        >              "creator": {
        >              "name": "The One",
        >              "site": "Purple",
        >              "url": "http://www.sample.com"
        >              },
        >              "time": 300,
        >              "full": "https:sample2.com",
        >              "clothes": "jacket",
        >              }] 
           }


struct Content: Decodable {
    let description: String
    let category: String
}


if let fileURL = Bundle.main.url(forResource: "stub", withExtension: "json") {
    do {
        let data = try Data(contentsOf: fileURL)

        let decoder = JSONDecoder()
        let video = try decoder.decode([Content].self, from: data)

        print(video.description)

        // Success!
       // print(content.category)
    } catch {
        print("Error: \(error)")
    }
} else {
    print("No such file URL.")
}

在您的 JSON 数据中,content包含单个元素的数组。

我建议您像这样创建结构:

struct Response: Decodable {
  let content: [Item]
}

struct Item: Decodable {
  let description: String
  let category: String
}

然后你可以解码它并像这样使用它:

let response = try decoder.decode(Response.self, from: data)
guard !response.content.isEmpty else { // error handling here }
let video = response.content[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Codable 解析此 JSON? 的相关文章

随机推荐

  • 当我想在电脑中加载该模型时,我可以在 colab bu 中加载我的深度模型,但我不能

    我在colab中通过keras 2 3 1和tensorflow 2 1 0训练了一个深度模型 我用JSON和Keras保存了我的模型 saveWeightPath content drive My Drive model info mod
  • Postgres UUID 和休眠

    我有一个具有 UUID 列的实体 它不是主键 我正在使用 Postgres 和 hibernate 我对此专栏的类型是https www postgresql org docs 9 1 static datatype uuid html h
  • 无法满足显式设备规范“/device:GPU:0”,因为没有匹配的设备

    我想在我的 Ubuntu 14 04 机器上使用 TensorFlow 0 12 作为 GPU 但是 当将设备分配给节点时 我收到以下错误 InvalidArgumentError see above for traceback Canno
  • 如何正确安装mysqlconnecter java?

    上网冲浪后 我意识到我应该在系统环境变量中设置类路径连接器 jar 文件的路径文件我这样做了 并在命令行中输入此命令我有这个 C Users User gt echo classpath D classpath mysql connecto
  • 使用子模块克隆存储库:覆盖凭据

    我必须automate克隆存储库并获取它的所有子模块 存储库子模块的 url 指定于 gitmodules 如果我要使用默认值 我就会这样做 git clone recursive https username email protecte
  • 如何保留一级对象并仅提取其子密钥之一?

    我正在使用 terraform state json 输出 并想对其进行一些转换 鉴于 terraform 发出的输入 cost sensitive false value 123 test id sensitive false value
  • zend框架中的一个模块中的多个控制器

    你好 我是 zend Framework2 2 0 的新手 我想创建一个带有多个控制器的模块我已经从 github 下载了 Album 模块并且它工作正常 现在我想在其中添加更多控制器 下面我显示了模块中文件的文件夹结构 module Al
  • 获取 emr-ddb-hadoop.jar 将 DynamoDB 与 EMR Spark 连接

    我有一个 DynamoDB 表 需要将其连接到 EMR Spark SQL 才能对该表运行查询 我获得了带有发行标签 emr 4 6 0 和 Spark 1 6 1 的 EMR Spark Cluster 我指的是文档 使用 Spark 分
  • 将键值对添加到数组中的所有对象

    我想向数组中的所有对象添加一个键 值参数 eg var arrOfObj name eve name john name jane 现在我想向所有对象添加一个新参数 isActive 以便生成的数组如下所示 eg name eve isAc
  • 嵌套重组 - Django

    我有一个包含以下字段的模型 日期 员工 和 计划时间 每个员工对于不同的日期都有不同的计划工作时间 我正在尝试构建我的模板 其中员工按行列出 他们的计划工作时间列在正确的相应日期下的列中 像这样的东西 https i stack imgur
  • 如何避免 OrderBy - 内存使用问题

    假设我们有一个很大的点列表List
  • SizedBox 与 Padding、Margin 的区别

    我们应该使用 Margin Padding 或 SizedBox 来在小部件之间提供间距吗 小部件的 Margin 和 padding 可以完成工作 那么 SizedBox 的用途是什么 SizedBox creates space bet
  • Haskell,optparse-generic 的未命名命令行参数

    我在用着optparse 通用 https hackage haskell org package optparse generic解析名为的程序的命令行参数example 我有一个带有命名字段的数据类型 记录语法 例如 data Exam
  • 更新AWS S3过期时间

    我想知道如何延长密钥的有效期 我指的不是访问对象的签名 URL 而是密钥本身 我将 AWS 设置为存储桶中的所有对象应在 90 天后过期的规则 在大多数情况下 这就是我希望发生的事情 有时我需要将单个密钥的使用寿命最多再延长 90 天 事实
  • Spring 中 JavaConfig 相对于 XML 配置的优势?

    早些时候 配置曾经在代码中硬编码 后来它被外部化到 property 文件 为了避免硬编码值 避免为了更改配置而更改代码 等等 然后它转移到 XML 为了为了更加标准化 无错误等 现在 在阅读 Spring 3 中的 Configurati
  • 您应该在 Windows 8 应用程序的哪个位置编写“隐私策略”代码?

    我的应用程序未通过认证 原因是 4 1 1 如果您的应用程序具有网络功能 则必须有隐私声明 您必须在应用程序的说明页面以及 Windows 设置超级按钮中显示的应用程序设置中提供对隐私政策的访问权限 他们在说什么 什么描述 如何设置 Win
  • JBoss 中的 jndi.properties

    有没有办法配置 JNDI 以便查找首先检查 localhost 如果没有找到匹配的名称 则会自动发现其他 jndi 服务器 我对文档的理解是 这是使用集群时的默认行为 16 2 2 客户端配置 http docs jboss org jbo
  • Xpath 和通配符

    我尝试了几种组合但没有成功 该数据的完整 xpath 是 id detail row seek 37878 td问题是每个节点的数字部分 37878 都会发生变化 因此我无法使用 foreach 循环遍历节点 有没有办法使用通配符并将 xp
  • github 操作未收到机密

    我看过其他答案 但似乎都不起作用 我想我只是想用 Github Actions 做一些非常简单的事情 只需让 access key 可用于我的 github 操作 而不将其放入我的 github 存储库中 所以我认为我们可以创造action
  • 如何使用 Codable 解析此 JSON?

    我一直在尝试从我的中解析这个对象JSON并不断收到此错误 错误 类型不匹配 Swift Array Swift DecodingError Context codingPath debugDescription 本应解码数组 但找到了字典