From a3fd8846a58d791ddb3547c3b7374241a48b7aeb Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Wed, 27 Mar 2019 11:12:28 +0800 Subject: [PATCH] Bin key map (#2362) Suppport nested bin-key map --- src/emqx_message.erl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/emqx_message.erl b/src/emqx_message.erl index f7cab7f6c..d4f490ed7 100644 --- a/src/emqx_message.erl +++ b/src/emqx_message.erl @@ -174,7 +174,7 @@ to_list(Msg) -> to_bin_key_list(Msg) -> lists:zipwith( fun(Key, Val) -> - {bin(Key), Val} + {bin(Key), bin_key_map(Val)} end, record_info(fields, message), tl(tuple_to_list(Msg))). %% MilliSeconds @@ -192,6 +192,13 @@ format(flags, Flags) -> format(headers, Headers) -> io_lib:format("~p", [Headers]). +bin_key_map(Map) when is_map(Map) -> + maps:fold(fun(Key, Val, Acc) -> + Acc#{bin(Key) => bin_key_map(Val)} + end, #{}, Map); +bin_key_map(Data) -> + Data. + bin(Bin) when is_binary(Bin) -> Bin; bin(Atom) when is_atom(Atom) -> list_to_binary(atom_to_list(Atom)); -bin(Str) when is_list(Str) -> list_to_binary(Str). \ No newline at end of file +bin(Str) when is_list(Str) -> list_to_binary(Str).