Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在elixir中将一个EXTO模型编码为JSON_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

在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