Hi, I have a usecase for retrieving Postgrex.INET structs from my repo (I will only be reading not writing), however no matter what I do, some error gets thrown
hachiware | ** (Protocol.UndefinedError) protocol Jason.Encoder not implemented for type Postgrex.INET (a struct), Jason.Encoder protocol must always be explicitly implemented.
hachiware |
hachiware | If you own the struct, you can derive the implementation specifying which fields should be encoded to JSON:
hachiware |
hachiware | @derive {Jason.Encoder, only: […]}
hachiware | defstruct …
hachiware |
hachiware | It is also possible to encode all fields, although this should be used carefully to avoid accidentally leaking private information when new fields are added:
hachiware |
hachiware | @derive Jason.Encoder
hachiware | defstruct …
hachiware |
hachiware | Finally, if you don’t own the struct you want to encode to JSON, you may use Protocol.derive/3 placed outside of any module:
hachiware |
hachiware | Protocol.derive(Jason.Encoder, NameOfTheStruct, only: […])
hachiware | Protocol.derive(Jason.Encoder, NameOfTheStruct)
hachiware |
hachiware |
hachiware | Got value:
hachiware |
hachiware | %Postgrex.INET{address: {0, 0, 0, 0}, netmask: 0}
hachiware |
hachiware | (jason 1.4.4) lib/jason.ex:164: Jason.encode!/2
hachiware | (hachiware 0.1.0) lib/hachiware/sse/connection_implementation.ex:11: Hachiware.Sse.ConnectionImplementation.send/1
hachiware | (hachiware 0.1.0) lib/hachiware/poller/runner.ex:20: anonymous fn/5 in Hachiware.Poller.Runner.run/1
hachiware | (elixir 1.18.4) lib/agent/server.ex:23: Agent.Server.handle_call/3
hachiware | (stdlib 7.1) gen_server.erl:2470: :gen_server.try_handle_call/4
hachiware | (stdlib 7.1) gen_server.erl:2499: :gen_server.handle_msg/3
hachiware | (stdlib 7.1) proc_lib.erl:333: :proc_lib.init_p_do_apply/3
After trying the Protocol.derive recommendation, it now says that Jason.Encoder is not implemented for type Tuple, I’m wondering if anyone has also experienced this and if there is any workaround to get this to work






















