From 57ecdd41a874a6a0992447edfa822e9101fd578e Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 25 Dec 2025 22:24:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20`NumberUtil.parseNumber`?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=B8=AD=E6=96=87=E9=80=97=E5=8F=B7=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=AF=86=E5=88=AB=E9=97=AE=E9=A2=98=EF=BC=88issue#419?= =?UTF-8?q?7@Github=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/v7/core/math/NumberParser.java | 4 +++ .../hutool/v7/json/issues/Issue4197Test.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java b/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java index 2a8763a98b..3784af6a67 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java @@ -17,6 +17,7 @@ package cn.hutool.v7.core.math; import cn.hutool.v7.core.array.ArrayUtil; +import cn.hutool.v7.core.convert.ConvertUtil; import cn.hutool.v7.core.text.CharUtil; import cn.hutool.v7.core.text.StrUtil; @@ -370,6 +371,9 @@ public class NumberParser { numberStr = StrUtil.subSuf(numberStr, 1); } + // issue@4197@Github 转为半角 + numberStr = ConvertUtil.toDBC(numberStr); + try { final NumberFormat format = NumberFormat.getInstance(locale); if (format instanceof DecimalFormat) { diff --git a/hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java b/hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java new file mode 100644 index 0000000000..997a0a65c3 --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java @@ -0,0 +1,29 @@ +package cn.hutool.v7.json.issues; + +import cn.hutool.v7.json.JSONUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; + +public class Issue4197Test { + + @Data + @NoArgsConstructor + @AllArgsConstructor + static + class TestDTO { + + private BigDecimal h; + } + + @Test + void toBeanTest() { + final TestDTO bean = JSONUtil.toBean("{\"h\":\"123,456,789\"}", TestDTO.class); + Assertions.assertEquals(new BigDecimal("123456789"), bean.getH()); + } + +}