Jason在Elixir中将二进制编码为UUID
我正试图想出一种干净的方法来覆盖for二进制文件,这将允许我从二进制文件中提取uuid。以下是我在理论上想做的:Jason在Elixir中将二进制编码为UUID,elixir,uuid,jason,Elixir,Uuid,Jason,我正试图想出一种干净的方法来覆盖for二进制文件,这将允许我从二进制文件中提取uuid。以下是我在理论上想做的: 定义Jason.Encoder,用于:位字符串do def encode(二进制,opts)何时为二进制(二进制)do 使用false而不是尝试全局覆盖位字符串的协议,您可以将UUID包装在自己的结构中,并为该结构实现Jason.Encoder协议: defmodule jsonuid do defstruct[:uuid] 定义Jason.do def encode(%jsonui
定义Jason.Encoder,用于:位字符串do
def encode(二进制,opts)何时为二进制(二进制)do
使用false而不是尝试全局覆盖位字符串的协议,您可以将UUID包装在自己的结构中,并为该结构实现Jason.Encoder
协议:
defmodule jsonuid do
defstruct[:uuid]
定义Jason.do
def encode(%jsonuid{uuid:uuid},opts)何时是二进制(uuid)do
uuid
|>外太空人!()
|>Jason.Encode.string(opts)
结束
结束
结束
测试:
Jason.encode!(%jsonuid{uuid:exto.uuid.bingenerate()})
=>“\“8cbf3df9-8408-4ce3-ac44-980a0f7dc19b”
您可以将UUID包装在自己的结构中,并为该结构实现Jason.Encoder
协议,而不是尝试全局覆盖位字符串的协议:
defmodule jsonuid do
defstruct[:uuid]
定义Jason.do
def encode(%jsonuid{uuid:uuid},opts)何时是二进制(uuid)do
uuid
|>外太空人!()
|>Jason.Encode.string(opts)
结束
结束
结束
测试:
Jason.encode!(%jsonuid{uuid:exto.uuid.bingenerate()})
=>“\“8cbf3df9-8408-4ce3-ac44-980a0f7dc19b”