将 JSON 映射到数据模型,需要从动态键中获取嵌套的电子邮件值

飞人987

我正在使用ObjectMapper将数据映射到我的模型,我需要在我的模型中填充一个 email 属性。棘手的部分是,根据用户注册的方式(使用email或使用Facebook/Google帐户),保存嵌套 email 属性的密钥将反映他们的注册选择。我将在下面给出我的 JSON 数据示例。

在常规电子邮件注册的情况下:

"local": {
            "email": "[email protected]",
            "password": "$2a$10$ZqqsS5F1QXmoEXnwL3v2sAxES",
            "passwordConf": "$2a$10$ZqqzsLfQXmoEXnwL3v2sAxES"
        }

在常规 Facebook 或谷歌注册的情况下:

"facebook": {
            "id": "10287",
            "email": "[email protected]"
        }

"google": {
            "id": "11514716",
            "email": "[email protected]"
        }

你明白了。正如您所看到的,密钥必须不同才能匹配 3 个选项(本地、facebook 或 google)之一,以便通过获取电子邮件进行访问。这个问题的一种解决方案是使用枚举。我将发布我的模型的相关部分。

import ObjectMapper

struct Client: Mappable {

    enum EmailType: String {
        case local = "local"
        case facebook = "facebook"
        case google = "google"
    }

    var emailType: String?

    init?(map: Map) {}

    mutating func mapping(map: Map) {
        emailType       <- map["\(EmailType.RawValue()).email"]
    }

这个想法是使用字符串插值,所以它会找到与上面枚举的匹配项。.email可以让我获得了嵌套属性。这似乎是一个合乎逻辑的解决方案,但它为 emailType 属性返回nil,所以很明显它没有正确映射它。

现在您已经看到了我的 JSON 和我的数据模型,您认为访问 email 属性的最佳方式是什么,无论它具有哪种类型的键。如果可能,我想避免为 local、fb 和 google 创建 3 个属性,我希望它简洁但动态。谢谢你的帮助!

普拉尚·图卡迪亚

您想要实现的目标我建议创建单独的模型类,因为它很容易为将来的更新进行修改

你所做的不正确。您刚刚创建EmailTypeRawValue对象,它将始终返回空

    emailType       <- map["\(EmailType.RawValue()).email"]

如果你打印

 print("\(EmailType.RawValue()).email")

你得到的输出是

。电子邮件

我对Map仍然没有更好的主意你需要的是告诉尝试每个枚举案例以获取数据

我的建议是,你需要检查nilemailType字符串

试试这个代码

    emailType       <- (map["\(EmailType.local).email"] ?? map["\(EmailType. facebook).email"] ||  map["\(EmailType. google).email"] )

希望对你有帮助

编辑\更新

我做了研究Mappble,发现以下对你有帮助

您收到错误,因为Map没有返回非可选值。所以要摆脱它,你需要使用map.JSON

   if map.JSON[EmailType.local.rawValue] != nil {
        emailType       <-  (map["\(EmailType.local).email"] )
    } else if map.JSON[EmailType.facebook.rawValue] != nil {
        emailType       <-  (map["\(EmailType.facebook).email"] )
    } else if map.JSON[EmailType. google.rawValue] != nil {
        emailType       <-  (map["\(EmailType.google).email"] )
    }

如果您仍然遇到问题,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将嵌套的json映射到余烬数据模型

来自分类Dev

无法将JSON数据映射到模型

来自分类Dev

将Mandrill JSON Webhooks入站电子邮件附件映射到C#类

来自分类Dev

Moshi将嵌套的JSON值映射到字段

来自分类Dev

无法将 json 数据映射到 js 模型

来自分类Dev

如何通过关联将嵌套的JSON映射到Sencha模型中?

来自分类Dev

如何将嵌套的json对象映射到angular 11中的模型?

来自分类Dev

将JSON对象映射到模型/存储

来自分类Dev

将JSON响应映射到模型

来自分类Dev

将php数组映射到嵌套的json

来自分类Dev

将php数组映射到嵌套的json

来自分类Dev

将包含动态键的REST API返回的JSON映射到Golang中的结构

来自分类Dev

Java - 将动态 JSON 映射到 DTO

来自分类Dev

在将单选按钮值映射到jquery的json数组中的值时需要帮助

来自分类Dev

将字典中具有多个值的字典键映射到python中的json

来自分类Dev

将字典中具有多个值的字典字典键映射到python中的json

来自分类Dev

将 json 值映射到数组

来自分类Dev

将 JSON 原语映射到 Java 中的对象值

来自分类Dev

将Laravel中的数据映射到JSON对象

来自分类Dev

将Laravel中的数据映射到JSON对象

来自分类Dev

Json 无法将数据投射到我的模型中

来自分类Dev

将数据模型映射到领域模型

来自分类Dev

如何使用 JOLT 将整个 JSON 对象作为值映射到新的 JSON 键?

来自分类Dev

无法将字段映射到JSON,并且无法将JSON映射到RESTKit类中的字段

来自分类Dev

将JSON对象转换为Ember数据模型

来自分类Dev

Angular2 将嵌套的 JSON 映射到模型 - 多个请求

来自分类Dev

如何使用 Javascript 将嵌套的 JSON 映射到 HTML 表

来自分类Dev

将数据导入JSON

来自分类Dev

如何将字典的键和值映射到json数组?

Related 相关文章

  1. 1

    将嵌套的json映射到余烬数据模型

  2. 2

    无法将JSON数据映射到模型

  3. 3

    将Mandrill JSON Webhooks入站电子邮件附件映射到C#类

  4. 4

    Moshi将嵌套的JSON值映射到字段

  5. 5

    无法将 json 数据映射到 js 模型

  6. 6

    如何通过关联将嵌套的JSON映射到Sencha模型中?

  7. 7

    如何将嵌套的json对象映射到angular 11中的模型?

  8. 8

    将JSON对象映射到模型/存储

  9. 9

    将JSON响应映射到模型

  10. 10

    将php数组映射到嵌套的json

  11. 11

    将php数组映射到嵌套的json

  12. 12

    将包含动态键的REST API返回的JSON映射到Golang中的结构

  13. 13

    Java - 将动态 JSON 映射到 DTO

  14. 14

    在将单选按钮值映射到jquery的json数组中的值时需要帮助

  15. 15

    将字典中具有多个值的字典键映射到python中的json

  16. 16

    将字典中具有多个值的字典字典键映射到python中的json

  17. 17

    将 json 值映射到数组

  18. 18

    将 JSON 原语映射到 Java 中的对象值

  19. 19

    将Laravel中的数据映射到JSON对象

  20. 20

    将Laravel中的数据映射到JSON对象

  21. 21

    Json 无法将数据投射到我的模型中

  22. 22

    将数据模型映射到领域模型

  23. 23

    如何使用 JOLT 将整个 JSON 对象作为值映射到新的 JSON 键?

  24. 24

    无法将字段映射到JSON,并且无法将JSON映射到RESTKit类中的字段

  25. 25

    将JSON对象转换为Ember数据模型

  26. 26

    Angular2 将嵌套的 JSON 映射到模型 - 多个请求

  27. 27

    如何使用 Javascript 将嵌套的 JSON 映射到 HTML 表

  28. 28

    将数据导入JSON

  29. 29

    如何将字典的键和值映射到json数组?

热门标签

归档