From 6ff06c21d09442d125fa92e627cc00f0a53f316a Mon Sep 17 00:00:00 2001 From: Alanscut Date: Wed, 15 Jan 2020 22:42:57 +0800 Subject: [PATCH] improve number type --- .../java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java index 0828b295..7bf5502f 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java @@ -85,6 +85,7 @@ public class GsonJsonProvider extends AbstractJsonProvider { private static boolean isPrimitiveNumber(final Number n) { return n instanceof Integer || + n instanceof Float || n instanceof Double || n instanceof Long || n instanceof BigDecimal || @@ -97,9 +98,9 @@ public class GsonJsonProvider extends AbstractJsonProvider { if (!isPrimitiveNumber(n)) { BigDecimal bigDecimal = new BigDecimal(n.toString()); if (bigDecimal.scale() <= 0) { - if (bigDecimal.compareTo(new BigDecimal(Integer.MAX_VALUE)) <= 0) { + if (bigDecimal.abs().compareTo(new BigDecimal(Integer.MAX_VALUE)) <= 0) { unwrapped = bigDecimal.intValue(); - } else if (bigDecimal.compareTo(new BigDecimal(Long.MAX_VALUE)) <= 0){ + } else if (bigDecimal.abs().compareTo(new BigDecimal(Long.MAX_VALUE)) <= 0){ unwrapped = bigDecimal.longValue(); } else { unwrapped = bigDecimal;