diff --git a/src/json.hpp b/src/json.hpp index feb1aa3cb..4c6d8671a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -493,10 +493,11 @@ template = 0> void get_arithmetic_value(Json const &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *j.template get_ptr(); - else if (j.is_number_unsigned()) + // unsigned must be checked first, since is_number_integer() == true for unsigned + if (j.is_number_unsigned()) val = *j.template get_ptr(); + else if (j.is_number_integer()) + val = *j.template get_ptr(); else if (j.is_number_float()) val = *j.template get_ptr(); else @@ -702,10 +703,10 @@ template < int> = 0> void from_json(Json const &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *j.template get_ptr(); - else if (j.is_number_unsigned()) + if (j.is_number_unsigned()) val = *j.template get_ptr(); + else if (j.is_number_integer()) + val = *j.template get_ptr(); else if (j.is_number_float()) val = *j.template get_ptr(); else if (j.is_boolean())