Current section

Files

Jump to
temporal_sdk src utils temporal_sdk_utils_json.erl
Raw

src/utils/temporal_sdk_utils_json.erl

-module(temporal_sdk_utils_json).
% elp:ignore W0012 W0040
-moduledoc false.
-export([
decode/1,
encode/1
]).
-spec decode(Binary :: binary()) -> {ok, map()} | {error, Reason :: map()}.
decode(Binary) ->
try json:decode(Binary) of
R when is_map(R) -> {ok, R};
_ -> {error, #{reason => "Invalid json binary.", binary => Binary}}
catch
error:Exception:_Stacktrace ->
{error, #{
reason => "Json decode error.",
error => Exception,
binary => Binary
}}
end.
-spec encode(Term :: json:encode_value()) -> {ok, iodata()} | {error, Reason :: map()}.
encode(Term) ->
try json:encode(Term) of
V -> {ok, V}
catch
error:Exception:_Stacktrace ->
{error, #{
reason => "Json encode error.",
error => Exception,
term => Term
}}
end.