浏览代码

Merge pull request #4730 from crobibero/base-item-dto-guid-nullable

Don't serialize empty GUID to null

(cherry picked from commit b6ecaccf92ae9ca9b0cc75e6dd666a896e72aa99)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Claus Vium 4 年之前
父节点
当前提交
aae90a8480

+ 2 - 2
Emby.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -1928,7 +1928,7 @@ namespace Emby.Server.Implementations.LiveTv
 
                 foreach (var programDto in currentProgramDtos)
                 {
-                    if (currentChannelsDict.TryGetValue(programDto.ChannelId, out BaseItemDto channelDto))
+                    if (programDto.ChannelId.HasValue && currentChannelsDict.TryGetValue(programDto.ChannelId.Value, out BaseItemDto channelDto))
                     {
                         channelDto.CurrentProgram = programDto;
                     }
@@ -2018,7 +2018,7 @@ namespace Emby.Server.Implementations.LiveTv
             info.DayPattern = _tvDtoService.GetDayPattern(info.Days);
 
             info.Name = program.Name;
-            info.ChannelId = programDto.ChannelId;
+            info.ChannelId = programDto.ChannelId ?? Guid.Empty;
             info.ChannelName = programDto.ChannelName;
             info.StartDate = program.StartDate;
             info.Name = program.Name;

+ 1 - 9
MediaBrowser.Common/Json/Converters/JsonGuidConverter.cs

@@ -13,21 +13,13 @@ namespace MediaBrowser.Common.Json.Converters
         public override Guid Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
             var guidStr = reader.GetString();
-
             return guidStr == null ? Guid.Empty : new Guid(guidStr);
         }
 
         /// <inheritdoc />
         public override void Write(Utf8JsonWriter writer, Guid value, JsonSerializerOptions options)
         {
-            if (value == Guid.Empty)
-            {
-                writer.WriteNullValue();
-            }
-            else
-            {
-                writer.WriteStringValue(value);
-            }
+            writer.WriteStringValue(value);
         }
     }
 }

+ 5 - 5
MediaBrowser.Model/Dto/BaseItemDto.cs

@@ -152,7 +152,7 @@ namespace MediaBrowser.Model.Dto
         /// Gets or sets the channel identifier.
         /// </summary>
         /// <value>The channel identifier.</value>
-        public Guid ChannelId { get; set; }
+        public Guid? ChannelId { get; set; }
 
         public string ChannelName { get; set; }
 
@@ -270,7 +270,7 @@ namespace MediaBrowser.Model.Dto
         /// Gets or sets the parent id.
         /// </summary>
         /// <value>The parent id.</value>
-        public Guid ParentId { get; set; }
+        public Guid? ParentId { get; set; }
 
         /// <summary>
         /// Gets or sets the type.
@@ -344,13 +344,13 @@ namespace MediaBrowser.Model.Dto
         /// Gets or sets the series id.
         /// </summary>
         /// <value>The series id.</value>
-        public Guid SeriesId { get; set; }
+        public Guid? SeriesId { get; set; }
 
         /// <summary>
         /// Gets or sets the season identifier.
         /// </summary>
         /// <value>The season identifier.</value>
-        public Guid SeasonId { get; set; }
+        public Guid? SeasonId { get; set; }
 
         /// <summary>
         /// Gets or sets the special feature count.
@@ -428,7 +428,7 @@ namespace MediaBrowser.Model.Dto
         /// Gets or sets the album id.
         /// </summary>
         /// <value>The album id.</value>
-        public Guid AlbumId { get; set; }
+        public Guid? AlbumId { get; set; }
 
         /// <summary>
         /// Gets or sets the album image tag.

+ 3 - 3
tests/Jellyfin.Common.Tests/Json/JsonGuidConverterTests.cs

@@ -3,7 +3,7 @@ using System.Text.Json;
 using MediaBrowser.Common.Json.Converters;
 using Xunit;
 
-namespace Jellyfin.Common.Tests.Extensions
+namespace Jellyfin.Common.Tests.Json
 {
     public class JsonGuidConverterTests
     {
@@ -44,9 +44,9 @@ namespace Jellyfin.Common.Tests.Extensions
         }
 
         [Fact]
-        public void Serialize_EmptyGuid_Null()
+        public void Serialize_EmptyGuid_EmptyGuid()
         {
-            Assert.Equal("null", JsonSerializer.Serialize(Guid.Empty, _options));
+            Assert.Equal($"\"{Guid.Empty}\"", JsonSerializer.Serialize(Guid.Empty, _options));
         }
     }
 }