|
9 | 9 |
|
10 | 10 | public class JsonNodeFactoryTest extends NodeTestBase
|
11 | 11 | {
|
12 |
| - private final ObjectMapper MAPPER = objectMapper(); |
| 12 | + private final ObjectMapper MAPPER = JsonMapper.builder() |
| 13 | + .enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS) |
| 14 | + .build(); |
13 | 15 |
|
14 | 16 | static class SortingNodeFactory extends JsonNodeFactory {
|
15 | 17 | private static final long serialVersionUID = 1L;
|
@@ -72,4 +74,27 @@ public void testSortingObjectNode() throws Exception
|
72 | 74 | assertEquals(BIGGER_OUTPUT,
|
73 | 75 | MAPPER.writeValueAsString(mapper.readTree(BIGGER_INPUT)));
|
74 | 76 | }
|
| 77 | + |
| 78 | + // 06-Nov-2022, tatu: Wasn't being tests, oddly enough |
| 79 | + public void testBigDecimalNormalization() throws Exception |
| 80 | + { |
| 81 | + final BigDecimal NON_NORMALIZED = new BigDecimal("12.5000"); |
| 82 | + final BigDecimal NORMALIZED = NON_NORMALIZED.stripTrailingZeros(); |
| 83 | + |
| 84 | + // By default, 2.x WILL normalize |
| 85 | + JsonNode n1 = MAPPER.readTree(String.valueOf(NON_NORMALIZED)); |
| 86 | + assertEquals(NORMALIZED, n1.decimalValue()); |
| 87 | + |
| 88 | + // But can change |
| 89 | + JsonNodeFactory nf = JsonNodeFactory.withExactBigDecimals(true); |
| 90 | + JsonNode n2 = nf.numberNode(NON_NORMALIZED); |
| 91 | + assertEquals(NON_NORMALIZED, n2.decimalValue()); |
| 92 | + |
| 93 | + ObjectMapper nonNormMapper = JsonMapper.builder() |
| 94 | + .enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS) |
| 95 | + .nodeFactory(nf) |
| 96 | + .build(); |
| 97 | + JsonNode n3 = nonNormMapper.readTree(String.valueOf(NON_NORMALIZED)); |
| 98 | + assertEquals(NON_NORMALIZED, n3.decimalValue()); |
| 99 | + } |
75 | 100 | }
|
0 commit comments