diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/jdk/NumberSerTest.java b/src/test/java/com/fasterxml/jackson/databind/ser/jdk/NumberSerTest.java index 2efa4f5551..e11845c4c5 100644 --- a/src/test/java/com/fasterxml/jackson/databind/ser/jdk/NumberSerTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/ser/jdk/NumberSerTest.java @@ -117,6 +117,12 @@ public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider se } } + static class MyBigDecimal extends BigDecimal { + public MyBigDecimal(String value) { + super(value); + } + } + /* /********************************************************** /* Test methods @@ -222,6 +228,24 @@ public void testCustomSerializationBigDecimalAsNumber() throws Exception { assertEquals(a2q("{'value':2.0}"), mapper.writeValueAsString(new BigDecimalHolder("2"))); } + @Test + public void testConfigOverrideJdkNumber() throws Exception { + ObjectMapper mapper = jsonMapperBuilder().withConfigOverride(BigDecimal.class, + c -> c.setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING))) + .build(); + String value = mapper.writeValueAsString(new BigDecimal("123.456")); + assertEquals(a2q("'123.456'"), value); + } + + @Test + public void testConfigOverrideNonJdkNumber() throws Exception { + ObjectMapper mapper = jsonMapperBuilder().withConfigOverride(MyBigDecimal.class, + c -> c.setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING))) + .build(); + String value = mapper.writeValueAsString(new MyBigDecimal("123.456")); + assertEquals(a2q("'123.456'"), value); + } + // default locale is en_US static DecimalFormat createDecimalFormatForDefaultLocale(final String pattern) { return new DecimalFormat(pattern, new DecimalFormatSymbols(Locale.ENGLISH));