From ee6789d4b3133b01c5934eb9d92dec1d5f0f0e2f Mon Sep 17 00:00:00 2001 From: "Angel D. Munoz" Date: Sun, 13 Feb 2022 22:25:56 -0600 Subject: [PATCH] fixes #32 --- src/Mondocks.Net/Serialization.fs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Mondocks.Net/Serialization.fs b/src/Mondocks.Net/Serialization.fs index 63d9956..4fae9e9 100644 --- a/src/Mondocks.Net/Serialization.fs +++ b/src/Mondocks.Net/Serialization.fs @@ -138,9 +138,17 @@ module Json = writer.WriteStringValue(stringValue) writer.WriteEndObject() + type BsonNullConverter() = + inherit JsonConverter() + override _.Read(reader: byref, typeToConvert: Type, options: JsonSerializerOptions) = + BsonNull.Value + + override _.Write(writer: Utf8JsonWriter, value: BsonNull, options: JsonSerializerOptions) = + writer.WriteNullValue() + let private defaults = let options = JsonSerializerOptions() - options.Converters.Add(JsonFSharpConverter()) + options.DefaultIgnoreCondition <- JsonIgnoreCondition.WhenWritingDefault options.Converters.Add(ObjectIdConverter()) options.Converters.Add(DateTimeConverter()) options.Converters.Add(DateTimeOffsetConverter()) @@ -148,12 +156,12 @@ module Json = options.Converters.Add(DoubleConverter()) options.Converters.Add(Int64Converter()) options.Converters.Add(Int32Converter()) - options.IgnoreNullValues <- true + options.Converters.Add(BsonNullConverter()) options type Serializer() = static member Serialize<'T>(value: 'T) = JsonSerializer.Serialize<'T>(value, defaults) - static member Serialize<'T>(value: 'T, options) = + static member Serialize<'T>(value: 'T, options: JsonSerializerOptions) = JsonSerializer.Serialize<'T>(value, options)