@@ -8,8 +8,11 @@ import com.fasterxml.jackson.databind.DeserializationFeature
88import com.fasterxml.jackson.databind.MapperFeature
99import com.fasterxml.jackson.databind.SerializationFeature
1010import com.fasterxml.jackson.databind.SerializerProvider
11+ import com.fasterxml.jackson.databind.cfg.CoercionAction
12+ import com.fasterxml.jackson.databind.cfg.CoercionInputShape
1113import com.fasterxml.jackson.databind.json.JsonMapper
1214import com.fasterxml.jackson.databind.module.SimpleModule
15+ import com.fasterxml.jackson.databind.type.LogicalType
1316import com.fasterxml.jackson.datatype.jdk8.Jdk8Module
1417import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
1518import com.fasterxml.jackson.module.kotlin.kotlinModule
@@ -21,6 +24,60 @@ fun jsonMapper(): JsonMapper =
2124 .addModule(Jdk8Module ())
2225 .addModule(JavaTimeModule ())
2326 .addModule(SimpleModule ().addSerializer(InputStreamJsonSerializer ))
27+ .withCoercionConfig(LogicalType .Boolean ) {
28+ it.setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
29+ .setCoercion(CoercionInputShape .Float , CoercionAction .Fail )
30+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
31+ .setCoercion(CoercionInputShape .Array , CoercionAction .Fail )
32+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
33+ }
34+ .withCoercionConfig(LogicalType .Integer ) {
35+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
36+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
37+ .setCoercion(CoercionInputShape .Array , CoercionAction .Fail )
38+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
39+ }
40+ .withCoercionConfig(LogicalType .Float ) {
41+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
42+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
43+ .setCoercion(CoercionInputShape .Array , CoercionAction .Fail )
44+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
45+ }
46+ .withCoercionConfig(LogicalType .Textual ) {
47+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
48+ .setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
49+ .setCoercion(CoercionInputShape .Float , CoercionAction .Fail )
50+ .setCoercion(CoercionInputShape .Array , CoercionAction .Fail )
51+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
52+ }
53+ .withCoercionConfig(LogicalType .Array ) {
54+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
55+ .setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
56+ .setCoercion(CoercionInputShape .Float , CoercionAction .Fail )
57+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
58+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
59+ }
60+ .withCoercionConfig(LogicalType .Collection ) {
61+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
62+ .setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
63+ .setCoercion(CoercionInputShape .Float , CoercionAction .Fail )
64+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
65+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
66+ }
67+ .withCoercionConfig(LogicalType .Map ) {
68+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
69+ .setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
70+ .setCoercion(CoercionInputShape .Float , CoercionAction .Fail )
71+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
72+ .setCoercion(CoercionInputShape .Object , CoercionAction .Fail )
73+ }
74+ .withCoercionConfig(LogicalType .POJO ) {
75+ it.setCoercion(CoercionInputShape .Boolean , CoercionAction .Fail )
76+ .setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
77+ .setCoercion(CoercionInputShape .Float , CoercionAction .Fail )
78+ .setCoercion(CoercionInputShape .String , CoercionAction .Fail )
79+ .setCoercion(CoercionInputShape .Array , CoercionAction .Fail )
80+ }
2481 .serializationInclusion(JsonInclude .Include .NON_ABSENT )
2582 .disable(DeserializationFeature .ADJUST_DATES_TO_CONTEXT_TIME_ZONE )
2683 .disable(SerializationFeature .FLUSH_AFTER_WRITE_VALUE )
0 commit comments