如何键入强制解码JSON,就像它来自数据库一样

火药

从数据库加载日期/时间类型时,Ecto将转换为Ecto.DateTime类型。从JSON字符串加载模型时,如何应用相同的类型转换

defmodule Rocket.User do
  use Rocket.Model

  schema "users" do
    field :created_at, :datetime
    field :name, :string
    field :email, :string
    field :password, :string
    field :timezone, :string
  end
end

iex(40)> Poison.decode!(~s({"created_at":"2015-01-21T06:05:10.891Z"}), as: Rocket.User)  
%Rocket.User{created_at: "2015-01-21T06:05:10.891Z", email: nil, id: nil,
 name: nil, password: nil, timezone: nil}
何塞·瓦里姆(JoséValim)

如果使用的是Ecto 0.6.0,最好的方法是使用变更集:

Ecto.Changeset.cast Poison.decode!(data), %Rocket.User{},
                    ~w(required_fields), ~w(optional_fields)

如果您将其作为外部数据接收,则实际上建议使用变更集,因为在将其添加到模型之前,需要转换,过滤和验证该数据。您可以在Ecto简介Ecto.Changeset模块文档中找到有关它们的更多信息

但是,还有一个问题:Ecto不知道如何将字符串转换为datetime。但是,您可以使用自定义类型教它如何操作。我在下面创建了一个模板,您只需要实现强制转换功能即可:

https://gist.github.com/josevalim/1ed574b388c32f056da1

然后在您的架构中:

timestamps type: Rocket.DateTime

您可以在Ecto.Type文档中找到更多信息我知道我们需要在Ecto中对此进行改进,我认为我们至少应该能够以JSON中指定的格式解析日期时间。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何显示自适应卡选择选项,就像用户键入它一样?

来自分类Dev

就像parse.com一样,如何在Cloudant中创建用户数据库?

来自分类Dev

如何强制响应式iframe目标尊重iframe的视口并做出响应,就像直接访问它一样?

来自分类Dev

我如何执行任何命令inline ssh,就像我手动键入它一样,但是直接输出到本地计算机?

来自分类Dev

C ++:如何从文件重定向到cin并显示,就像用户键入输入一样

来自分类Dev

如何在请求中像参数一样发送数据库表名并在服务器上的函数中处理它?

来自分类Dev

像数据库一样的Docker部署

来自分类Dev

如何在Coldfusion SQL查询中处理像ÄÜ一样的umlaute插入数据库?

来自分类Dev

如何像以前使用 Access 一样使用 SQL 数据库?

来自分类Dev

如何显示多个标记的标记标题,而无需在 iOS swift 中点击它,就像 iOS 照片库中的位置一样

来自分类Dev

正在运行的Shell脚本:如何在输出中包括命令,就像以交互方式键入一样

来自分类Dev

引导启动程序库,它添加了额外的端点(就像执行器一样)

来自分类Dev

如何在 Java 中从这个 JSON 中获取名字姓氏和 ID 就像使用 Gson google json 库一样

来自分类Dev

ssh: 2 就像 ^w 一样,无论终端如何

来自分类Dev

如何像使用终端一样使用Node.js net.Socket与Postgresql数据库进行通信

来自分类Dev

强制UIWebView加载网站的移动版本,就像Safari一样

来自分类Dev

是否可以像本地数据库一样在OneDrive(在云中)上使用sqlite数据库?

来自分类Dev

是否可以像本地数据库一样在OneDrive(在云中)上使用sqlite数据库?

来自分类Dev

移动长的图片,就像它随着CSS闪烁一样

来自分类Dev

运行python脚本,就像它位于其他地方一样

来自分类Dev

铛是否具有_ExtFloat就像它具有_ExtInt一样?

来自分类Dev

Django更新表的jsonresponse使屏幕变黑,就像打开模式一样;无法关闭它

来自分类Dev

控制rs-232接收器,就像它了解最新的IP协议一样

来自分类Dev

如何将Excel中的数据从剪贴板导入,就像它在文本文件中一样?

来自分类Dev

我如何才能获得所有业务数据,就像当前用户正在关注它们一样?

来自分类Dev

让长按就像右键单击一样?

来自分类Dev

就像帖子/评论一样,laravel

来自分类Dev

Bootstrap 列就像行一样

来自分类Dev

让长按就像右键单击一样?

Related 相关文章

  1. 1

    如何显示自适应卡选择选项,就像用户键入它一样?

  2. 2

    就像parse.com一样,如何在Cloudant中创建用户数据库?

  3. 3

    如何强制响应式iframe目标尊重iframe的视口并做出响应,就像直接访问它一样?

  4. 4

    我如何执行任何命令inline ssh,就像我手动键入它一样,但是直接输出到本地计算机?

  5. 5

    C ++:如何从文件重定向到cin并显示,就像用户键入输入一样

  6. 6

    如何在请求中像参数一样发送数据库表名并在服务器上的函数中处理它?

  7. 7

    像数据库一样的Docker部署

  8. 8

    如何在Coldfusion SQL查询中处理像ÄÜ一样的umlaute插入数据库?

  9. 9

    如何像以前使用 Access 一样使用 SQL 数据库?

  10. 10

    如何显示多个标记的标记标题,而无需在 iOS swift 中点击它,就像 iOS 照片库中的位置一样

  11. 11

    正在运行的Shell脚本:如何在输出中包括命令,就像以交互方式键入一样

  12. 12

    引导启动程序库,它添加了额外的端点(就像执行器一样)

  13. 13

    如何在 Java 中从这个 JSON 中获取名字姓氏和 ID 就像使用 Gson google json 库一样

  14. 14

    ssh: 2 就像 ^w 一样,无论终端如何

  15. 15

    如何像使用终端一样使用Node.js net.Socket与Postgresql数据库进行通信

  16. 16

    强制UIWebView加载网站的移动版本,就像Safari一样

  17. 17

    是否可以像本地数据库一样在OneDrive(在云中)上使用sqlite数据库?

  18. 18

    是否可以像本地数据库一样在OneDrive(在云中)上使用sqlite数据库?

  19. 19

    移动长的图片,就像它随着CSS闪烁一样

  20. 20

    运行python脚本,就像它位于其他地方一样

  21. 21

    铛是否具有_ExtFloat就像它具有_ExtInt一样?

  22. 22

    Django更新表的jsonresponse使屏幕变黑,就像打开模式一样;无法关闭它

  23. 23

    控制rs-232接收器,就像它了解最新的IP协议一样

  24. 24

    如何将Excel中的数据从剪贴板导入,就像它在文本文件中一样?

  25. 25

    我如何才能获得所有业务数据,就像当前用户正在关注它们一样?

  26. 26

    让长按就像右键单击一样?

  27. 27

    就像帖子/评论一样,laravel

  28. 28

    Bootstrap 列就像行一样

  29. 29

    让长按就像右键单击一样?

热门标签

归档