假设我正在构建一个版本化的 API(例如,让我们使用一个用户对象):
%User{
id: "b2507407-891b-486e-aaf8-ba262c16d618"
first_name: "John",
last_name: "Doe",
email: "john@doe.com"
}
我最初的想法是为不同版本的 API 使用多个编码器,我将运行不同的 Jason 编码器:
defimpl Jason.EncoderV1, for: __MODULE__ do
def encode(user, opts) do
Jason.Encode.map(%{name: "#{user.first_name} #{user.last_name}"}, opts)
end
end
defimpl Jason.EncoderV2, for: __MODULE__ do
def encode(user, opts) do
Jason.Encode.map(%{first_name: first_name, last_name: last_name}, opts)
end
end
我在 Jason 文档中没有看到任何允许这样做的参考。