如何将 Swift 对象转换为字典

2024-01-30

我对 iOS 编程还比较陌生。然而,我认为 Swift 会有一种自动方式将对象转换为 JSON,反之亦然。话虽这么说,我已经找到了几个可以做到这一点的库。

然而...

似乎无论您如何将数据发布到 Web 服务(甚至使用 AlamoFire 之类的东西),请求都必须是字典。所有这些论坛都展示了将返回的 JSON 字符串转换为对象是多么容易的示例。真的。但请求需要手动编码。也就是说,遍历所有对象属性并将它们映射为字典。

所以我的问题是:我错过了什么吗?我是否都搞错了,有一种超级简单的方法可以(a)在请求中发送 JSON(而不是字典)或(b)自动将对象转换为字典?

我再次看到处理 JSON 响应是多么容易。我只是在寻找一种自动方法,将我想要发布到 Web 服务的请求对象转换为像 AlamoFire(或其他)这样的库所需的格式。对于其他语言来说,这是相当微不足道的,所以我希望 Swift 有一种同样简单且自动化的方法。


我必须不同意@Darko。

In Swift 2,

use 面向协议的编程以及提供的简单反映Mirror class :

protocol JSONAble {}

extension JSONAble {
    func toDict() -> [String:Any] {
        var dict = [String:Any]()
        let otherSelf = Mirror(reflecting: self)
        for child in otherSelf.children {
            if let key = child.label {
                dict[key] = child.value
            }
        }
        return dict
    }
}

然后您可以将此协议与您的请求类一起使用并生成所需的字典:

class JsonRequest : JSONAble {
    var param1 : String?
    // ...
}

let request = JsonRequest()
// set params of the request
let dict = request.toDict()
// use your dict
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Swift 对象转换为字典 的相关文章

  • Swift 3 中的 JSON 解析

    有没有人能够找到一种在 Swift 3 中解析 JSON 文件的方法 我已经能够返回数据 但在将数据分解为特定字段时我没有成功 我会发布示例代码 但我已经尝试了很多不同的方法但没有成功 并且没有保存任何代码 我想要解析的基本格式是这样的 提
  • 如何将异常序列化为Json

    C 异常是 ISerialisable 因此它们不能也是 DataContract 因此我无法使用 JsonDataContractSerializer 将异常序列化为 JSON 的替代方案是什么 由于这个问题还没有真正得到解答 只需创建一
  • 用于检查 Apache Camel XML 中字符串的 JSONPath 表达式

    假设我有一个简单的 json 文件 如下所示 log host blah severity INFO system 1 我正在使用 Apache Camel 它是 Spring XML 来处理和路由 json 文件 我的路由代码看起来像这样
  • 在Python中如何获取字典的部分视图?

    是否有可能获得部分视图dict在Python中类似于pandasdf tail df head 说你有很长一段时间dict 而您只想检查某些元素 开头 结尾等 dict 就像是 dict head 3 To see the first 3
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • C# 中字典的内存使用情况

    我有一些代码添加了嵌套字典 格式如下 Dictionary
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • iOS 防止计时器 UILabel 在数字变化时“晃动”

    我有一个UILabel它以以下格式显示计时器的输出MM ss SS 分 秒 厘秒 但是随着厘秒宽度的变化 它从左向右 摇动 例如 11 比 33 窄 有什么办法可以减轻这种情况吗 我尝试过将其居中 给它固定的宽度 但它们似乎没有帮助 从iO
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • Flutter:将字符串转换为 Map

    我正在使用 SQFlite 在本地存储数据 我有一个表 其中有一个名为 json 的字段 该字段的类型为 TEXT 并存储转换为字符串的 json 例如 name Eduardo Age 23 性别男 到目前为止 一切正常 但随后我需要从数
  • Swift:如何减少 didupdatelocations 调用

    我想出了一些代码来打印我所在位置的地址和邮政编码 这是在 didupdatelocation 函数中完成的 我遇到的唯一问题是 didupdatelocation 函数每秒都会更新该地址 因为这电池效率非常低 所以我一直在寻找使用间隔的方法
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • 根据 .NET Core 2.1 中的更改重新加载 Serilog JSON 配置

    我目前正在开发 ASP NET Core 2 1 应用程序 并使用 Serilog 进行日志记录 我想在运行时为我的 Serilog 实现重新加载应用程序设置文件 我的目标是在运行时更改日志级别 例如我写入minimumLevelDebug
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • 为什么 json.Unmarshal 返回映射而不是预期的结构?

    看看这个游乐场 http play golang org p dWku6SPqj5 http play golang org p dWku6SPqj5 基本上 我正在工作的图书馆收到了interface 作为参数 然后需要json Unma
  • 使用 NewtonSoft 在一行中生成 JSON 对象

    我正在使用 JSON 库牛顿软件 http nuget org packages newtonsoft json生成 JSON 字符串 JObject out JObject FromObject new typ photos return
  • SKNode 上的 runAction 未完成

    我使用 NSOperation 子类来获取串行执行SKAction正如这个问题中所描述的 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行 https stackoverflow com
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • Elasticsearch:预期的字段名称,但得到了 START_OBJECT

    我一直在尝试运行以下查询 但每次运行时都会收到以下错误 nested ElasticsearchParseException Expected field name but got START OBJECT field value fact

随机推荐

  • 在 GKE / Kubernetes 中构建、推送和测试 Docker 镜像的工作流程

    我正在开发一个 Kubernetes 服务 用于在 Google Container Egine GKE 中部署 直到最近 我还在 Google Cloud Shell 中构建了 Docker 镜像 但现在已经达到了配额限制 因为运行 Cl
  • 警报管理器立即触发

    您好 我目前正在使用 AlarmManager 我写了下面给出的代码 根据代码 AlarmManager 应在 10 秒后触发 但在我的代码中 警报管理器会立即触发 请帮忙 public class MainActivity extends
  • 数据结构的功能类似于 C 或 C++ 中的数据库

    是否有一种数据结构可以提供数据库的功能 如插入 更新 删除等 例如 创建一个类似于数据库表的结构 在其上存储数据并对其进行查询 有选择地删除它 我知道使用哈希表可以做到这一点 例如 uthash 库 但据我所知 在哈希表中仅更新一个列元素并
  • eclipse 不适用于 ubuntu 16.04

    我刚刚安装了ubuntu 16 04并下载了eclipse并解压 当我启动 Eclipse 时 欢迎页面是空的 当我启动 eclipse 市场时 什么也没有发生 如何解决这个问题 编辑完后尝试启动 Eclipseeclipse ini文件并
  • IE10 SCRIPT5009:“__doPostBack”未定义

    我在使用 ASP NET 控件的 IE10 上遇到问题 需要 JavaScript 回发 例如链接按钮 它可以在 IE9 版本以及 IE10 兼容模式下正常工作 但在 IE10 标准模式下 出现以下错误 SCRIPT5009 doPostB
  • 使用 gradle 脚本结帐

    我是 gradle 新手 我想使用 gradle 脚本签出远程存储库 可以运行 shell 命令 Inside gradle 任务来使用日期时间戳 shell 命令克隆远程存储库 是的 您可以使用 gradle Exec 类型任务在 OS
  • PHP 中的 preg_replace - NOT 条件的正则表达式

    我正在尝试使用 preg replace 在 PHP 中编写一个函数 它将替换列表中未找到的所有字符 通常我们会替换它们所在的位置 但这个不同 例如 如果我有字符串 mystring ab2c4d 我可以编写以下函数 将所有数字替换为 pr
  • 从 Mysql 导出 CSV

    我在导出使用 php 从我的 mysql 表之一创建的 csv 文件时遇到了一些麻烦 我使用的代码打印了正确的数据 但我看不到如何在 csv 文件中下载这些数据 而是提供了创建的文件的下载链接 我以为浏览器应该自动提供文件供下载 但事实并非
  • Java:如何检查数组中的元素是否已初始化?

    我想检查数组中的某个元素是否已初始化 我该怎么做 创建数组时 数组中的所有值都会被初始化 初始值可以明确设置 例如X xs x1 xN 或者在实例化数组时分配默认值 对于对象数组 每个元素的默认值是null for a boolean数组
  • 在 Windows Phone 7 上录制扬声器

    您知道是否可以拦截 win Phone 7 上的音频流并记录扬声器上正在播放的内容 或者 我使用 MediaElement 有没有办法获取当前流 我想在达到特定频率时添加一些动画 thanks 只要您知道该媒体的位置并可以启动下载 您就可以
  • Simple_form 必填字段不起作用 - Ruby on Rails

    我在 RoR 应用程序中有一个使用 simple form 构建的提交表单 当字段为空时 应用程序仍会进入下一步 不会提示错误或警告 这些字段应该是默认的required true 但即使手动编写也不起作用 该应用程序有 3 个步骤 New
  • 创建交换链失败

    我正在关注 DX 示例和 MSDN 参考 但现在遇到了困难 我从 D3D11CreateDeviceAndSwapChain 获取 E InvalidArg 的 HRESULT 我知道它是我传递的 IDXGIAdapter 因为如果我将其更
  • Gradle war 清单版本号对于发布版本错误

    我有一个构建 war 文件的 gradle 项目 并包含一个清单 war archiveName archive war manifest attributes Implementation Title project name Imple
  • 无法从 Matplotlib 轴中删除流图箭头

    我怎样才能删除一个流线图 https matplotlib org 3 2 1 api as gen matplotlib pyplot streamplot html来自 Matplotlib 绘图而不清除所有内容 i e 不使用plt
  • LInq 排序依据和排序依据描述

    我正在使用 Linq 来过滤对象列表并对它们进行排序 例如 myList Where x gt x Item SF x AdSize minadSize OrderBy x gt x ManufacturingDate OrderBy x
  • MGTwitterEngine 和 iPhone

    我下载了 MGTwitterEngine 并添加到我的 iPhone 项目中 它正在连接并获取雕像 我可以通过将它们转储到 NSLog 中来判断它们 但是 我不知道如何解析这些调用 以便将它们添加到表中 它们以 NSString 形式返回
  • Grails 应用程序的种子数据

    将种子 初始或测试 数据加载到 grails 应用程序中的最佳方法是什么 我正在考虑 3 个选择 将所有内容放入 BootStrap groovy 文件中 如果领域类和测试数据很多 这会很乏味 编写自定义功能以通过 xml 加载它 借助 g
  • 从小书签加载模式窗口(如亚马逊愿望清单小书签)

    我正在使用一个书签来加载一个 html 页面 一切都很好 但是 由于浏览器的外观通常很丑陋 所以看起来不太热 有没有办法完全无框架加载页面 就像它的 jquery 模态版本一样 我认为它不可能在页面内实现 可以说是覆盖自身 有没有办法可以在
  • 如何从根网站及其所有子网站循环访问

    我遇到了一个需要解决的问题 我想循环访问根网站及其所有子网站 并希望设置一些属性 using System using System Collections Generic using System Linq using System Te
  • 如何将 Swift 对象转换为字典

    我对 iOS 编程还比较陌生 然而 我认为 Swift 会有一种自动方式将对象转换为 JSON 反之亦然 话虽这么说 我已经找到了几个可以做到这一点的库 然而 似乎无论您如何将数据发布到 Web 服务 甚至使用 AlamoFire 之类的东