Răsfoiți Sursa

bump System.Text.Json

crobibero 4 ani în urmă
părinte
comite
5f64ab02a0

+ 0 - 3
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -90,9 +90,6 @@ namespace Emby.Server.Implementations.Data
             _typeMapper = new TypeMapper();
             _jsonOptions = JsonDefaults.GetOptions();
 
-            // GetItem throws NotSupportedException with this enabled, so hardcode false.
-            _jsonOptions.IgnoreNullValues = false;
-
             DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");
         }
 

+ 6 - 2
Jellyfin.Api/Controllers/PluginsController.cs

@@ -120,10 +120,14 @@ namespace Jellyfin.Api.Controllers
                 return NotFound();
             }
 
-            var configuration = (BasePluginConfiguration)await JsonSerializer.DeserializeAsync(Request.Body, plugin.ConfigurationType, _serializerOptions)
+            var configuration = (BasePluginConfiguration?)await JsonSerializer.DeserializeAsync(Request.Body, plugin.ConfigurationType, _serializerOptions)
                 .ConfigureAwait(false);
 
-            plugin.UpdateConfiguration(configuration);
+            if (configuration != null)
+            {
+                plugin.UpdateConfiguration(configuration);
+            }
+
             return NoContent();
         }
 

+ 5 - 1
Jellyfin.Api/Helpers/MediaInfoHelper.cs

@@ -127,7 +127,11 @@ namespace Jellyfin.Api.Helpers
             {
                 // Since we're going to be setting properties on MediaSourceInfos that come out of _mediaSourceManager, we should clone it
                 // Should we move this directly into MediaSourceManager?
-                result.MediaSources = JsonSerializer.Deserialize<MediaSourceInfo[]>(JsonSerializer.SerializeToUtf8Bytes(mediaSources));
+                var mediaSourcesClone = JsonSerializer.Deserialize<MediaSourceInfo[]>(JsonSerializer.SerializeToUtf8Bytes(mediaSources));
+                if (mediaSourcesClone != null)
+                {
+                    result.MediaSources = mediaSourcesClone;
+                }
 
                 result.PlaySessionId = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
             }

+ 1 - 0
Jellyfin.Api/Jellyfin.Api.csproj

@@ -19,6 +19,7 @@
     <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.6" />
     <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
     <PackageReference Include="Swashbuckle.AspNetCore.ReDoc" Version="5.5.1" />
+    <PackageReference Include="System.Text.Json" Version="5.0.0-preview.7.20364.11" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 0
Jellyfin.Data/Jellyfin.Data.csproj

@@ -22,6 +22,7 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.6" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.6" />
+    <PackageReference Include="System.Text.Json" Version="5.0.0-preview.7.20364.11" />
   </ItemGroup>
 
 </Project>

+ 1 - 1
Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs

@@ -168,7 +168,7 @@ namespace Jellyfin.Server.Extensions
                     // From JsonDefaults
                     options.JsonSerializerOptions.ReadCommentHandling = jsonOptions.ReadCommentHandling;
                     options.JsonSerializerOptions.WriteIndented = jsonOptions.WriteIndented;
-                    options.JsonSerializerOptions.IgnoreNullValues = jsonOptions.IgnoreNullValues;
+                    options.JsonSerializerOptions.DefaultIgnoreCondition = jsonOptions.DefaultIgnoreCondition;
 
                     options.JsonSerializerOptions.Converters.Clear();
                     foreach (var converter in jsonOptions.Converters)

+ 1 - 0
Jellyfin.Server/Jellyfin.Server.csproj

@@ -54,6 +54,7 @@
     <PackageReference Include="Serilog.Sinks.Graylog" Version="2.1.3" />
     <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.0.3" />
     <PackageReference Include="SQLitePCLRaw.provider.sqlite3.netstandard11" Version="1.1.14" />
+    <PackageReference Include="System.Text.Json" Version="5.0.0-preview.7.20364.11" />
   </ItemGroup>
 
   <ItemGroup>

+ 5 - 0
Jellyfin.Server/Migrations/Routines/MigrateDisplayPreferencesDb.cs

@@ -81,6 +81,11 @@ namespace Jellyfin.Server.Migrations.Routines
                 foreach (var result in results)
                 {
                     var dto = JsonSerializer.Deserialize<DisplayPreferencesDto>(result[3].ToString(), _jsonOptions);
+                    if (dto is null)
+                    {
+                        continue;
+                    }
+
                     var chromecastVersion = dto.CustomPrefs.TryGetValue("chromecastVersion", out var version)
                         ? chromecastDict[version]
                         : ChromecastVersion.Stable;

+ 6 - 1
Jellyfin.Server/Migrations/Routines/MigrateUserDb.cs

@@ -74,7 +74,12 @@ namespace Jellyfin.Server.Migrations.Routines
 
                 foreach (var entry in queryResult)
                 {
-                    UserMockup mockup = JsonSerializer.Deserialize<UserMockup>(entry[2].ToBlob(), JsonDefaults.GetOptions());
+                    UserMockup? mockup = JsonSerializer.Deserialize<UserMockup>(entry[2].ToBlob(), JsonDefaults.GetOptions());
+                    if (mockup is null)
+                    {
+                        continue;
+                    }
+
                     var userDataDir = Path.Combine(_paths.UserConfigurationDirectoryPath, mockup.Name);
 
                     var config = File.Exists(Path.Combine(userDataDir, "config.xml"))

+ 5 - 0
MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs

@@ -14,6 +14,11 @@ namespace MediaBrowser.Common.Json.Converters
         /// <inheritdoc />
         public override int? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
+            if (reader.TokenType == JsonTokenType.Null)
+            {
+                return null;
+            }
+
             if (reader.TokenType == JsonTokenType.String)
             {
                 ReadOnlySpan<byte> span = reader.HasValueSequence ? reader.ValueSequence.ToArray() : reader.ValueSpan;

+ 5 - 0
MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs

@@ -21,6 +21,11 @@ namespace MediaBrowser.Common.Json.Converters
         /// <returns>Parsed value.</returns>
         public override long? Read(ref Utf8JsonReader reader, Type type, JsonSerializerOptions options)
         {
+            if (reader.TokenType == JsonTokenType.Null)
+            {
+                return null;
+            }
+
             if (reader.TokenType == JsonTokenType.String)
             {
                 // try to parse number directly from bytes

+ 1 - 1
MediaBrowser.Common/Json/JsonDefaults.cs

@@ -25,7 +25,7 @@ namespace MediaBrowser.Common.Json
             {
                 ReadCommentHandling = JsonCommentHandling.Disallow,
                 WriteIndented = false,
-                IgnoreNullValues = true
+                DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault
             };
 
             options.Converters.Add(new JsonGuidConverter());

+ 1 - 1
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -25,7 +25,7 @@
     <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
     <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.6" />
     <PackageReference Include="System.Globalization" Version="4.3.0" />
-    <PackageReference Include="System.Text.Json" Version="4.7.2" />
+    <PackageReference Include="System.Text.Json" Version="5.0.0-preview.7.20364.11" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 0
tests/MediaBrowser.Api.Tests/MediaBrowser.Api.Tests.csproj

@@ -10,6 +10,7 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.6" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.0" />
+    <PackageReference Include="System.Text.Json" Version="5.0.0-preview.7.20364.11" />
     <PackageReference Include="xunit" Version="2.4.1" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
     <PackageReference Include="coverlet.collector" Version="1.3.0" />