在elixir中将一个EXTO模型编码为JSON
我正在复习以下教程,试图了解长生不老药和凤凰: 我在测试中遇到了一个问题,主要是使用了毒药。编码!关于接触模型。我得到以下错误:在elixir中将一个EXTO模型编码为JSON,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我正在复习以下教程,试图了解长生不老药和凤凰: 我在测试中遇到了一个问题,主要是使用了毒药。编码!关于接触模型。我得到以下错误: unable to encode value: {nil, "contacts"} no function clause matching in Poison.Encoder.Any.encode/2 这使我想到以下问题: 还有解决办法: 我已将博客文章中的代码添加到lib/poison_encoder.ex中,但现在出现以下错误: unable to en
unable to encode value: {nil, "contacts"}
no function clause matching in Poison.Encoder.Any.encode/2
这使我想到以下问题:
还有解决办法:
我已将博客文章中的代码添加到lib/poison_encoder.ex中,但现在出现以下错误:
unable to encode value: {nil, "contacts"}
no function clause matching in Poison.Encoder.Any.encode/2
lib/poison_encoder.ex中的代码:
defimpl Poison.Encoder, for: Any do
def encode(%{__struct__: _} = struct, options) do
map = struct
|> Map.from_struct
|> sanitize_map
Poison.Encoder.Map.encode(map, options)
end
defp sanitize_map(map) do
Map.drop(map, [:__meta__, :__struct__])
end
end
更新到毒药1.5。使用它,您可以在模型中声明:
@derive {Poison.Encoder, only: [:foo, :bar, :baz]}
schema "your schema" do
field :foo
field :bar
field :baz
end
它将更快、更安全、更干净。请将您的代码包含在
lib/poison\u编码器中。ex
在后扫描中,请描述“它不工作”?如果没有适当的描述,可能会发生这种情况的原因有很多,很难找出还应该做些什么。我希望看到更多的例子来说明这一点。>@derivate
-与内核中的@derivate
相同。defstruct/1
,因为模式在幕后定义了结构;请注意,这也可以通过Jason来完成@derivate{Jason.Encoder,仅:[:name,:other_field]}
是否有一种方法可以在编码时使用camelCase
而不是snake_case
?