aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs
diff options
context:
space:
mode:
authorJoshua M. Boniface <joshua@boniface.me>2020-12-30 19:56:04 -0500
committerJoshua M. Boniface <joshua@boniface.me>2020-12-31 18:50:02 -0500
commit4a2b1430286e112c588a5ab5ed5cfb7f56667264 (patch)
treec9aee5bfced35c85e570c2ae90bf89b41aba47ed /MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs
parentd737c2b84a5ac9038f1a307b9ad63f636703de79 (diff)
Merge pull request #4884 from crobibero/json-nullable-guid-converter
Add JsonConverter for Nullable Guids (cherry picked from commit 0de45d8724d15899f27b22d95be8102e293d7041) Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Diffstat (limited to 'MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs')
-rw-r--r--MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs33
1 files changed, 33 insertions, 0 deletions
diff --git a/MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs b/MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs
new file mode 100644
index 000000000..6d96d5496
--- /dev/null
+++ b/MediaBrowser.Common/Json/Converters/JsonNullableGuidConverter.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Globalization;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace MediaBrowser.Common.Json.Converters
+{
+ /// <summary>
+ /// Converts a GUID object or value to/from JSON.
+ /// </summary>
+ public class JsonNullableGuidConverter : JsonConverter<Guid?>
+ {
+ /// <inheritdoc />
+ public override Guid? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ var guidStr = reader.GetString();
+ return guidStr == null ? null : new Guid(guidStr);
+ }
+
+ /// <inheritdoc />
+ public override void Write(Utf8JsonWriter writer, Guid? value, JsonSerializerOptions options)
+ {
+ if (value == null || value == Guid.Empty)
+ {
+ writer.WriteNullValue();
+ }
+ else
+ {
+ writer.WriteStringValue(value.Value.ToString("N", CultureInfo.InvariantCulture));
+ }
+ }
+ }
+}