Skip to content

Commit d4be00f

Browse files
committed
添加 Read_UseBigIntegerMode 新特性
1 parent 05e3485 commit d4be00f

File tree

5 files changed

+14
-6
lines changed

5 files changed

+14
-6
lines changed

UPDATE_LOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
* 添加 ONodeCreator 静态方法的支持(普通类)
66
* 添加 ONodeAttr:ignore 注解属性支持
77
* 添加 Write_BooleanAsNumber 新特性
8+
* 添加 Read_UseBigDecimalMode 新特性
9+
* 添加 Read_UseBigIntegerMode 新特性
810
* 添加 DecodeContext:hasFeature, EncodeContext:hasFeature 新特性
911
* 完善 Write_Nulls 对 Map 输出的控制
1012
* 优化 Write_BrowserCompatible 写入性能
13+
*
1114

1215
### 4.0.0
1316

snack4-test/src/test/java/features/snack4/codec/FeatureTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public void Read_UseBigNumberMode() {
129129
System.out.println(data.get("a").getClass());
130130
Assertions.assertEquals(Integer.class, data.get("a").getClass());
131131

132-
data = ONode.ofJson(json, Feature.Read_UseBigNumberMode).toBean();
132+
data = ONode.ofJson(json, Feature.Read_UseBigIntegerMode).toBean();
133133
System.out.println(data.get("a").getClass());
134134
Assertions.assertEquals(BigInteger.class, data.get("a").getClass());
135135
}

snack4-test/src/test/java/features/snack4/v3_composite/NumberTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public void test8() {
137137
@Test
138138
public void test9() {
139139
String json = "{\"a\":0.0000}";
140-
String json2 = ONode.ofJson(json, Feature.Read_UseBigNumberMode).toJson();
140+
String json2 = ONode.ofJson(json, Feature.Read_UseBigDecimalMode).toJson();
141141

142142
Assertions.assertEquals(json, json2);
143143
}

snack4/src/main/java/org/noear/snack4/Feature.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,14 @@ public enum Feature {
7878
Read_AllowUnescapedControlCharacters,
7979

8080
/**
81-
* 读取大数字时使用字符串模式(避免精度丢失),用 BigDecimal 替代 Double, 用 BigInteger 替代 Long
81+
* 读取使用大数字模式(避免精度丢失),用 BigDecimal 替代 Double,
8282
*/
83-
Read_UseBigNumberMode,
83+
Read_UseBigDecimalMode,
84+
85+
/**
86+
* 读取使用大整型模式,用 BigInteger 替代 Long
87+
* */
88+
Read_UseBigIntegerMode,
8489

8590
/**
8691
* 读取时允许使用获取器

snack4/src/main/java/org/noear/snack4/json/JsonReader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,13 +501,13 @@ private Number parseNumber() throws IOException {
501501
return Long.parseLong(numStr);
502502
} else {
503503
if (numStr.indexOf('.') >= 0 || numStr.indexOf('e') >= 0 || numStr.indexOf('E') >= 0) {
504-
if (numStr.length() > 19 || opts.hasFeature(Feature.Read_UseBigNumberMode)) {
504+
if (numStr.length() > 19 || opts.hasFeature(Feature.Read_UseBigDecimalMode)) {
505505
return new BigDecimal(numStr);
506506
} else {
507507
return Double.parseDouble(numStr);
508508
}
509509
} else {
510-
if (numStr.length() > 19 || opts.hasFeature(Feature.Read_UseBigNumberMode)) {
510+
if (numStr.length() > 19 || opts.hasFeature(Feature.Read_UseBigIntegerMode)) {
511511
return new BigInteger(numStr);
512512
} else {
513513
long longVal = Long.parseLong(numStr);

0 commit comments

Comments
 (0)