Browse Source

Merge pull request #4735 from crobibero/json-recursion

Fix JsonConverter recursion

(cherry picked from commit 94d805d03d93764365c5b63e23f239d47d23ad0a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Anthony Lavado 4 years ago
parent
commit
126753a1fe

+ 0 - 2
Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs

@@ -342,10 +342,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 
             public string URL { get; set; }
 
-            [JsonConverter(typeof(JsonBoolNumberConverter))]
             public bool Favorite { get; set; }
 
-            [JsonConverter(typeof(JsonBoolNumberConverter))]
             public bool DRM { get; set; }
 
             public int HD { get; set; }

+ 1 - 1
MediaBrowser.Common/Json/Converters/JsonBoolNumberConverter.cs

@@ -24,7 +24,7 @@ namespace MediaBrowser.Common.Json.Converters
         /// <inheritdoc />
         public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
         {
-            JsonSerializer.Serialize(writer, value, options);
+            writer.WriteBooleanValue(value);
         }
     }
 }

+ 11 - 0
tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs

@@ -19,5 +19,16 @@ namespace Jellyfin.Common.Tests.Json
             var value = JsonSerializer.Deserialize<bool>(input, options);
             Assert.Equal(value, output);
         }
+
+        [Theory]
+        [InlineData(true, "true")]
+        [InlineData(false, "false")]
+        public static void Serialize_Bool_Success(bool input, string output)
+        {
+            var options = new JsonSerializerOptions();
+            options.Converters.Add(new JsonBoolNumberConverter());
+            var value = JsonSerializer.Serialize(input, options);
+            Assert.Equal(value, output);
+        }
     }
 }