diff --git a/apps/emqx_utils/src/emqx_utils_maps.erl b/apps/emqx_utils/src/emqx_utils_maps.erl index 1d97a926a..47b21a90a 100644 --- a/apps/emqx_utils/src/emqx_utils_maps.erl +++ b/apps/emqx_utils/src/emqx_utils_maps.erl @@ -345,7 +345,7 @@ indent(IndentKey, PickKeys, Map) -> -spec unindent(term(), map()) -> map(). unindent(Key, Map) -> - maps:merge( + deep_merge( maps:remove(Key, Map), maps:get(Key, Map, #{}) ). diff --git a/apps/emqx_utils/test/emqx_utils_maps_tests.erl b/apps/emqx_utils/test/emqx_utils_maps_tests.erl index 2778b5257..8b6e29235 100644 --- a/apps/emqx_utils/test/emqx_utils_maps_tests.erl +++ b/apps/emqx_utils/test/emqx_utils_maps_tests.erl @@ -170,5 +170,9 @@ map_indent_unindent_test_() -> ?_assertEqual( #{a => 1, b => 2}, unindent(c, M) + ), + ?_assertEqual( + #{a => #{c => 3, d => 4}}, + unindent(b, #{a => #{c => 3}, b => #{a => #{d => 4}}}) ) ].