8282-define (IS_WHITESPACE (C ),
8383 (C =:= $\s orelse C =:= $\t orelse C =:= $\r orelse C =:= $\n )).
8484
85- -ifdef (map_unavailable ).
86- -define (IS_MAP (_ ), false ).
87- -else .
88- -define (IS_MAP (X ), is_map (X )).
89- -endif .
9085
9186% % @type json_string() = atom | binary()
9287% % @type json_number() = integer() | float()
@@ -159,14 +154,8 @@ parse_decoder_options([{format, Format} | Rest], State)
159154 when Format =:= struct orelse Format =:= eep18 orelse Format =:= proplist ->
160155 parse_decoder_options (Rest , State # decoder {object_hook = Format }).
161156
162- -ifdef (map_unavailable ).
163- make_object_hook_for_map () ->
164- exit ({json_decode , {bad_format , map_unavailable }}).
165- -else .
166157make_object_hook_for_map () ->
167158 fun ({struct , P }) -> maps :from_list (P ) end .
168- -endif .
169-
170159
171160json_encode (true , _State ) ->
172161 <<" true" >>;
@@ -194,7 +183,7 @@ json_encode(Array, State) when is_list(Array) ->
194183 json_encode_array (Array , State );
195184json_encode ({array , Array }, State ) when is_list (Array ) ->
196185 json_encode_array (Array , State );
197- json_encode (M , State ) when ? IS_MAP (M ) ->
186+ json_encode (M , State ) when is_map (M ) ->
198187 json_encode_map (M , State );
199188json_encode ({json , IoList }, _State ) ->
200189 IoList ;
@@ -223,11 +212,6 @@ json_encode_proplist(Props, State) ->
223212 [$, | Acc1 ] = lists :foldl (F , " {" , Props ),
224213 lists :reverse ([$\} | Acc1 ]).
225214
226- -ifdef (map_unavailable ).
227- json_encode_map (Bad , _State ) ->
228- % % IS_MAP definition guarantees that this branch is dead
229- exit ({json_encode , {bad_term , Bad }}).
230- -else .
231215json_encode_map (Map , _State ) when map_size (Map ) =:= 0 ->
232216 <<" {}" >>;
233217json_encode_map (Map , State ) ->
@@ -238,7 +222,6 @@ json_encode_map(Map, State) ->
238222 end ,
239223 [$, | Acc1 ] = maps :fold (F , " {" , Map ),
240224 lists :reverse ([$\} | Acc1 ]).
241- -endif .
242225
243226json_encode_string (A , State ) when is_atom (A ) ->
244227 json_encode_string (atom_to_binary (A , latin1 ), State );
@@ -977,8 +960,6 @@ utf8_non_character_test_() ->
977960 [{" roundtrip escaped" , ? _assertEqual (S , decode (encode (S )))},
978961 {" roundtrip utf8" , ? _assertEqual (S , decode ((encoder ([{utf8 , true }]))(S )))}].
979962
980- - ifndef (map_unavailable ).
981-
982963decode_map_test () ->
983964 Json = " {\" var1\" : 3, \" var2\" : {\" var3\" : 7}}" ,
984965 M = #{<<" var1" >> => 3 ,<<" var2" >> => #{<<" var3" >> => 7 }},
@@ -992,5 +973,3 @@ encode_empty_map_test() ->
992973 ? assertEqual (<<" {}" >>, encode (#{})).
993974
994975- endif .
995-
996- - endif .
0 commit comments