diff --git a/src/emqx_json.erl b/src/emqx_json.erl index c81c9b06b..93243f7ac 100644 --- a/src/emqx_json.erl +++ b/src/emqx_json.erl @@ -103,7 +103,7 @@ safe_decode(Json, Opts) -> , from_ejson/1 ]}). -to_ejson([[{_,_}]|_] = L) -> +to_ejson([[{_,_}|_]|_] = L) -> [to_ejson(E) || E <- L]; to_ejson([{_, _}|_] = L) -> lists:foldl( diff --git a/test/emqx_json_SUITE.erl b/test/emqx_json_SUITE.erl index 434180cb9..67f8108c5 100644 --- a/test/emqx_json_SUITE.erl +++ b/test/emqx_json_SUITE.erl @@ -68,6 +68,11 @@ t_decode_encode(_) -> [{<<"foo">>, <<"bar">>}] = decode(encode({[{<<"foo">>, <<"bar">>}]})), [{<<"foo">>, <<"bar">>}] = decode(encode([{<<"foo">>, <<"bar">>}])), [[{<<"foo">>, <<"bar">>}]] = decode(encode([[{<<"foo">>, <<"bar">>}]])), + [[{<<"foo">>, <<"bar">>}, + {<<"a">>, <<"b">>}], + [{<<"x">>, <<"y">>}]] = decode(encode([[{<<"foo">>, <<"bar">>}, + {<<"a">>, <<"b">>}], + [{<<"x">>, <<"y">>}]])), #{<<"foo">> := <<"bar">>} = decode(encode(#{<<"foo">> => <<"bar">>}), [return_maps]), JsonText = <<"{\"bool\":true,\"int\":10,\"foo\":\"bar\"}">>, JsonMaps = #{<<"bool">> => true,