Decode/Encode json from nested proplist

This commit is contained in:
JianBo He 2020-02-06 11:23:34 +08:00 committed by JianBo He
parent 2858d828b1
commit b9bdb03005
2 changed files with 5 additions and 0 deletions

View File

@ -103,6 +103,8 @@ safe_decode(Json, Opts) ->
, from_ejson/1 , from_ejson/1
]}). ]}).
to_ejson([[{_,_}]|_] = L) ->
[to_ejson(E) || E <- L];
to_ejson([{_, _}|_] = L) -> to_ejson([{_, _}|_] = L) ->
lists:foldl( lists:foldl(
fun({Name, Value}, Acc) -> fun({Name, Value}, Acc) ->
@ -110,6 +112,8 @@ to_ejson([{_, _}|_] = L) ->
end, #{}, L); end, #{}, L);
to_ejson(T) -> T. to_ejson(T) -> T.
from_ejson([{_}|_] = L) ->
[from_ejson(E) || E <- L];
from_ejson({L}) -> from_ejson({L}) ->
[{Name, from_ejson(Value)} || {Name, Value} <- L]; [{Name, from_ejson(Value)} || {Name, Value} <- L];
from_ejson(T) -> T. from_ejson(T) -> T.

View File

@ -67,6 +67,7 @@ t_decode_encode(_) ->
[{<<"foo">>, <<"bar">>}] = decode(encode({[{foo, bar}]})), [{<<"foo">>, <<"bar">>}] = decode(encode({[{foo, bar}]})),
[{<<"foo">>, <<"bar">>}] = decode(encode({[{<<"foo">>, <<"bar">>}]})), [{<<"foo">>, <<"bar">>}] = decode(encode({[{<<"foo">>, <<"bar">>}]})),
[{<<"foo">>, <<"bar">>}] = decode(encode([{<<"foo">>, <<"bar">>}])), [{<<"foo">>, <<"bar">>}] = decode(encode([{<<"foo">>, <<"bar">>}])),
[[{<<"foo">>, <<"bar">>}]] = decode(encode([[{<<"foo">>, <<"bar">>}]])),
#{<<"foo">> := <<"bar">>} = decode(encode(#{<<"foo">> => <<"bar">>}), [return_maps]), #{<<"foo">> := <<"bar">>} = decode(encode(#{<<"foo">> => <<"bar">>}), [return_maps]),
JsonText = <<"{\"bool\":true,\"int\":10,\"foo\":\"bar\"}">>, JsonText = <<"{\"bool\":true,\"int\":10,\"foo\":\"bar\"}">>,
JsonMaps = #{<<"bool">> => true, JsonMaps = #{<<"bool">> => true,