【问题标题】:Elixir Jason encode struct with tupleElixir Jason 用元组编码结构
【发布时间】:2019-05-16 09:05:27
【问题描述】:

我有一个结构,它已经有@derive Jason.Encoder,但该结构中的某些字段是元组,因此无法对结构进行编码,我该如何解决这个问题:/

更新

我已经使用下面提到的方法来实现协议。关于这种方法需要注意的重要一点是,它会改变整个项目的编码,请小心!

【问题讨论】:

  • 嗨——也许你可以提供一些你的代码示例?也许你可以给我们更多关于什么不起作用的细节?看起来您已经得到了答案,但对于以后可能会发现此问题的其他人,更多详细信息会有所帮助。

标签: elixir


【解决方案1】:

如果您确实需要将元组编码为列表类型,这可行:

defmodule TupleEncoder do
  alias Jason.Encoder

  defimpl Encoder, for: Tuple do
    def encode(data, options) when is_tuple(data) do
      data
      |> Tuple.to_list()
      |> Encoder.List.encode(options)
    end
  end
end

您应该能够根据需要使用类似的模式将其转换为另一种原始结构。

【讨论】:

    【解决方案2】:

    查看文档以了解您需要如何实现 encode/2 函数:https://hexdocs.pm/jason/Jason.Encoder.html

    作为实现的一部分,您需要决定如何对元组进行编码,因为它在 JSON 中没有模拟。数组可能是最简单的选择,所以你可以这样做mytuple |> Tuple.to_list

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 2021-01-08
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      相关资源
      最近更新 更多