【发布时间】:2021-01-08 00:15:03
【问题描述】:
我正在尝试一种干净的方法来覆盖二进制的JasonEncoder,这将允许我从二进制中提取 UUID。这是我理论上想做的事情:
defimpl Jason.Encoder, for: BitString do
def encode(binary, opts) when is_binary(binary) do
with false <- String.valid?(binary),
{:ok, uid} <- Ecto.UUID.cast(binary) do
uid
else
_ -> Jason.Encode.string(binary, opts)
end
end
def encode(bitstring, _opts) do
raise Protocol.UndefinedError,
protocol: @protocol,
value: bitstring,
description: "cannot encode a bitstring to JSON"
end
end
我正在考虑this stackoverflow 示例的思路,但我认为这里的问题是不能覆盖像 BitString 这样的本机类型。
【问题讨论】:
标签: elixir uuid elixir-jason