首页 > 解决方案 > Elixir Jason 用元组编码结构

问题描述

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

更新

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

标签: elixir

解决方案


如果您确实需要将元组编码为列表类型,则可以使用:

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

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


推荐阅读