diff --git a/rebar.config b/rebar.config index c59e185..628e738 100644 --- a/rebar.config +++ b/rebar.config @@ -1,2 +1,4 @@ % uncomment to disable encoding support for erlang maps -% {jsx_nomaps, true}. \ No newline at end of file +% {jsx_nomaps, true}. + +{erl_opts, [{platform_define, "R15", 'no_binary_to_whatever'}]}. \ No newline at end of file diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index ddbbfad..b16199b 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -929,10 +929,19 @@ finish_number(Rest, Handler, Acc, Stack, Config) -> maybe_done(Rest, handle_event(format_number(Acc), Handler, Config), Stack, Config). +-ifndef(no_binary_to_whatever). format_number({zero, Acc}) -> {integer, binary_to_integer(Acc)}; format_number({integer, Acc}) -> {integer, binary_to_integer(Acc)}; format_number({decimal, Acc}) -> {float, binary_to_float(Acc)}; format_number({exp, Acc}) -> {float, binary_to_float(Acc)}. +-endif. + +-ifdef(no_binary_to_whatever). +format_number({zero, Acc}) -> {integer, list_to_integer(unicode:characters_to_list(Acc))}; +format_number({integer, Acc}) -> {integer, list_to_integer(unicode:characters_to_list(Acc))}; +format_number({decimal, Acc}) -> {float, list_to_float(unicode:characters_to_list(Acc))}; +format_number({exp, Acc}) -> {float, list_to_float(unicode:characters_to_list(Acc))}. +-endif. true(<<$r, $u, $e, Rest/binary>>, Handler, Stack, Config) ->