Swift:无法读取数据,因为它的格式不正确

2024-03-04

我尝试使用 Alamofire 调用 POST Api,但它向我显示格式不正确的错误。

这是我的 JSON 响应:

[
  {
    "_source": {
      "nome": "LOTERIAS BELEM",
      "endereco": "R DO COMERCIO, 279",
      "uf": "AL",
      "cidade": "BELEM",
      "bairro": "CENTRO"
    },
    "_id": "010177175"
  },
  {
    "_source": {
      "nome": "Bel Loterias"
    },
    "_id": "80224903"
  },
  {
    "_source": {
      "nome": "BELLEZA LOTERIAS",
      "endereco": "R RIVADAVIA CORREA, 498",
      "uf": "RS",
      "cidade": "SANTANA DO LIVRAMENTO",
      "bairro": "CENTRO"
    },
    "_id": "180124986"
  }
]

class Album: Codable {
    var _source :  [_source]

}

class _source: Codable {
    var nome :  String
    var endereco : String
    var uf : String
    var cidade : String
    var bairro : String
}

var arrList = [Album]()

这就是我尝试用 Alamofire 解码的方式。

func request() {

        let urlString = URL(string: "My Url")
      //  Alamofire.request(url!).responseJSON {(response) in

        Alamofire.request(urlString!, method: .post, parameters: ["name": "belem"],encoding: JSONEncoding.default, headers: nil).responseJSON {
            (response) in

            switch (response.result) {
            case .success:
                if let data = response.data {
                    do {
                        let response = try JSONDecoder().decode([Album].self, from: data)
                        DispatchQueue.main.async {
                             self.arrList = response
                        }
                    }
                    catch {
                        print(error.localizedDescription)
                    }
                }
            case .failure( let error):
                print(error)
            }
       }
 }

只是你的Album型号不正确。

struct Album: Codable {
    var source : Source
    var id     : String

    enum CodingKeys: String, CodingKey {
        case source = "_source"
        case id = "_id"
    }
}

struct Source: Codable {
    var nome     : String
    var endereco : String?
    var uf       : String?
    var cidade   : String?
    var bairro   : String?
}

如果你不想_id然后只需删除相关部分即可。
至于你的Alamofire相关代码,那部分很好。


显着改进:

  • 通过自定义避免了模型中的下划线变量名称CodingKeys用于键映射目的
  • Typenames should always start with a Capital letter (so _source is Source)
    • 同样,变量名应始终以小写字母开头
  • Made some variables optional (based on your updated response)
    • 保持变量非可选意味着它must出现在要创建的模型的响应中
    • 将变量设置为可选意味着键可能会或可能不会出现在响应中,并且它不存在不会阻止模型的创建
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift:无法读取数据,因为它的格式不正确 的相关文章

  • 如何快速更改按钮图像?

    我正在开发一个有按钮的应用程序 该按钮没有文本 图像或背景 所以我想做的就是在viewDidLoad函数中给它一个图像 这就是我所拥有的 IBOutlet var tapButton UIButton override func viewD
  • JSON 解析错误:需要“STRING”

    我在用JSONLint http jsonlint com 解析一些 JSON 我不断收到错误 错误 第 1 行解析错误 产品 需要 STRING 却得到 未定义 这是代码 product code Abc123 description S
  • 如何使用正则表达式将字符串分成相同字符的组?

    我有一个这样的字符串 var string AAAAAAABBBCCCCCCDD 并喜欢将字符串分割成这种格式的数组 same characters gt same group 使用正则表达式 Array AAAAAAA BBB CCCCC
  • Swift 中带圆角的 NSWindow

    我想要一个圆角的窗户 但我在每个角落都有一个白点 Code let effect NSVisualEffectView frame NSRect x 0 y 0 width 0 height 0 effect blendingMode be
  • UISearchController 保留问题

    我正在尝试使用 UISearchController 但是我遇到了无法解决的保留问题 MainTableview 有两个部分 第1节 基于某些正则表达式过滤数据 第2节 All Data 我将 UISearchController 添加到我
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • Swift 中具有透明背景的按钮边框

    我怎样才能做一个UIButton边框看起来像下图 入门 按钮一样具有透明背景吗 我应该如何使用情节提要来实现这一点 或者如何以编程方式实现这一点 设置backgroundColor to clearColor使按钮透明 例如尝试下面的代码
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 在 UIView 中实现自定义 StaggereGrid,就像 SWIFT 中的 Etsy 应用程序一样

    我想实现一个像 Etsy 应用程序一样的 StaggeredGrid 但我对此一无所知 你能给我一些建议吗 这是我需要做的事情的屏幕截图 None
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过
  • Swift - 预期 '{' 启动 setter 定义

    我正在关注高级 swift WWDC 2014 视频 使用类上的下标来委托给类属性 但使用与视频中相同的语法时出现错误 enum Direction case North South East West class Place Thing
  • 为什么微软在 .net 3.5 SP1 之前就废弃了 JavaScriptSerializer,而在 .net 3.5 SP1 之后又重新启用了 JavaScriptSerializer?

    JavaScriptSerializer 在 net 3 5 SP1 之后并没有过时 我应该使用 JavaScriptSerializer 还是之前推荐的 DataContractJsonSerializer 还有为什么它被淘汰了 我很乐意
  • Firestore 读取包含子集合的文档的计费

    我正在制作一个应用程序 它存储用户使用我的应用程序学习了多少分钟 我的 Firestore 数据库以 用户 集合开始 每个用户都有自己的文档 该文档由其在 Auth 中生成的 userID 命名 我的问题是 如果我读取了他们的 userID
  • 列出 JSON 的所有键和值

    假设我有一些如下所示的 JSON items item id 0001 type donut name Cake ppu 0 55 batters batter
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • AudioPlayer 和锁屏/控制中心控制 Swift [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我是斯威夫特的新手 我写信是因为我想问一个问题 我和我的朋友正在开发一个音频播放器 但我们遇到了问题 播放器还可以在后台
  • 简单、安全的API认证系统

    我有一个简单的 REST JSON API 供其他网站 应用程序访问我网站的一些数据库 通过 PHP 网关 基本上该服务的工作原理如下 调用 example com fruit orange 服务器返回有关橙子的 JSON 信息 问题是 我
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male

随机推荐

  • 您可以从另一个线程访问 UI 元素吗? (未设置)

    我在 google here 上看到很多关于从另一个线程更新 UI 元素的线程 如果我只想获取复选框的值怎么办 我可以做到这一点而不需要做任何特别的事情吗 Edit 看来我得收回之前写的东西了 尝试了以下方法 添加了一个名为的文本框myTe
  • C++ 模板只是伪装的宏吗?

    我已经用 C 编程几年了 并且经常使用 STL 并且多次创建了自己的模板类来看看它是如何完成的 现在 我正在尝试将模板更深入地集成到我的面向对象设计中 一个挥之不去的想法不断浮现在我的脑海中 它们只是一个宏 真的 你可以使用 defines
  • 使用 Terraform 与 A​​zure VM 的 SSH 连接

    我已使用 Terraform 成功创建了一个 VM 作为 Azure 上资源组的一部分 下一步是在新机器中使用 ssh 并运行一些命令 为此 我创建了一个配置程序作为 VM 资源的一部分 并设置了 SSH 连接 resource azure
  • iPhone:显示带有导航栏的模态 UITableViewController

    我正在展示一个模态视图 它是UITableViewController班级 由于某种原因 当我显示导航栏时 它不会显示它 这是我的代码 SettingsCreateAccount detailViewController SettingsC
  • 使用 D3 设置下拉菜单的默认选择

    我创建了一个包含几个月的下拉菜单作为选项 但想预先指定一个选项作为默认值 然而 默认选择似乎顽固地保留在列表中的第一个选项 我尝试了下面的代码 这对我来说很有意义 因为对于任何其他属性 设置一个简单的比较就足以改变该属性的值 var def
  • 在名称为“appServlet”的 DispatcherServlet 中未找到带有 URI [/pms/j_spring_security_check] 的 HTTP 请求的映射

    我开发了一个 Spring 应用程序 并在其中实现了 Spring 安全集成到登录和注销功能 我使用 Spring security 和 xml 配置 但是当我登录系统时 它显示404 控制台告诉我 在名称为 appServlet 的 Di
  • 在同一个 Activity 中的两个 GridView 之间切换

    我一直在寻找如何解决几个问题 并得到了一些问题的答案 但有一件事仍在建设中 如果你们都不能帮助我 就不会完成 我一直在尝试放大和缩小 GridView 但转向了其他解决方案 因为我只需要两种状态 概述和详细视图 因此我制作了两个 Gridv
  • SF 符号分层、调色板和多色渲染模式颜色?

    在 WWDC 2021 上 Apple 宣布了 SF Symbols 3 它将在 iOS 15 和 macOS 12 中支持新的多色 SF Symbols 新的色彩渲染模式可通过图层注释增加符号的深度和强调 https developer
  • Vue 组合 API 使用 VueAxios?

    I am in main js输入vue axios main js import createApp from vue import axios from axios import VueAxios from vue axios impo
  • 你能让弹性盒子项扩展以适应父项而不是内容吗?

    我正在使用一个flexbox使 div 占据浏览器窗口中剩余的垂直空间 但我想防止它超出该范围 当其内容超出其垂直尺寸时 我希望滚动条显示在现在太小的 Flexbox 子项中 这可能吗 或者我应该使用其他一些布局技术吗 这是一个 JSFid
  • 闭包返回值(以前为completionBlock)

    我想在长期操作完成后返回一些值 但此外我想将逻辑和图形用户界面分开 例如 我有两节课 SomeServices swift 有一个名为 getDataFromService 的方法 MyTableViewController swift 将
  • 在 jQuery 中使用 FormData 提交表单 - 无需 Ajax 且无需隐藏字段

    我有一个函数 可以在表单提交上执行一些自定义工作 通过 Ajax 发送一些数据 将返回的数据附加到新的 FormData 对象中 现在我需要使用此 FormData 以常规方式 而不是通过 Ajax 提交表单 我知道它可以通过隐藏字段来实现
  • 如何检查 jpeg 是否适合内存?

    使用打开 JPEG 图像imagecreatefromjpeg很容易导致致命错误 因为所需的内存超过了memory limit A jpg小于 100Kb 的文件很容易超过 2000x2000 像素 打开时将占用大约 20 25MB 的内存
  • 如何在 Docker 容器中设置 PS1

    我想设置 PS1容器的环境变量 它帮助我识别多级或复杂的 Docker 环境设置 目前 docker 容器提示 root container id 如果我可以按如下方式更改它 我可以通过查看来识别容器 PS1提示本身 Level 1 roo
  • Spark - 写入Avro文件

    在如下流程中使用 Spark 使用 Scala API 编写 Avro 文件的常见做法是什么 从 HDFS 解析一些日志文件 对于每个日志文件应用一些业务逻辑并生成 Avro 文件 或者可能合并多个文件 将 Avro 文件写入 HDFS 我
  • 从oracle数据库获取唯一约束列名

    我正在从 UI 实现搜索功能 为此我想提供具有唯一约束的列名称下拉列表以及任何主键列 如果存在 以便用户可以使用任何这些选定的列相关数据进行搜索 我搜索过这样的查询但没有找到 就像是 SELECT COLUMN NAMEs FROM TAB
  • Android Listview 删除项目之间的任何空格

    我想删除 ListView 中不同项目之间的任何空格 代码
  • 设置 android:windowSoftInputMode="adjustPan" 时如何滚动布局?

    我的活动有一个顶部栏和一个底部栏 顶栏和底栏之间的空间我有一个线性布局 里面有几个编辑文本视图 因为我不希望每次软键盘出现时都调整布局大小 所以我在清单中为我的活动设置了 android windowSoftInputMode adjust
  • 如何禁用 Ext JS 按钮

    我有一个 id 为的按钮btnAdd我想在某些事件触发时禁用它 当某些窗口关闭时该事件发生 所以我尝试了下面的代码 但它不起作用 Ext create Ext window Window Some initialization code g
  • Swift:无法读取数据,因为它的格式不正确

    我尝试使用 Alamofire 调用 POST Api 但它向我显示格式不正确的错误 这是我的 JSON 响应 source nome LOTERIAS BELEM endereco R DO COMERCIO 279 uf AL cida