diff options
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/design/persistence/Serializers.java | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/main/java/design/persistence/Serializers.java b/src/main/java/design/persistence/Serializers.java index 246dbf1..d690633 100644 --- a/src/main/java/design/persistence/Serializers.java +++ b/src/main/java/design/persistence/Serializers.java @@ -13,10 +13,19 @@ import design.model.Golfer; import design.model.League; import java.io.IOException; +import java.util.Map; import java.time.LocalDateTime; import java.util.List; public class Serializers { + public static void configureMapper(ObjectMapper mapper) { + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); + mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); + mapper.registerModule(new JavaTimeModule()); + mapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)); + } + public static class CustomPrettyPrinter extends DefaultPrettyPrinter { public CustomPrettyPrinter() { super._arrayIndenter = new DefaultIndenter(); @@ -86,11 +95,21 @@ public class Serializers { } } - public static void configureMapper(ObjectMapper mapper) { - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); - mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); - mapper.registerModule(new JavaTimeModule()); - mapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)); + @SuppressWarnings("rawtypes") + public static class MapListSerializer extends JsonSerializer<Map> { + + @Override + public void serialize(Map value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeObject(value.entrySet()); + } + } + + @SuppressWarnings("rawtypes") + public static class MapListDeserializer extends JsonDeserializer<Map> { + + @Override + public Map deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + return Map.ofEntries(p.readValueAs(Map.Entry[].class)); + } } } |
