From: Steve Harter Date: Fri, 12 Jul 2019 18:21:20 +0000 (-0700) Subject: Don't apply dictionary key policy on extension data (dotnet/corefx#39425) X-Git-Tag: submit/tizen/20210909.063632~11031^2~962 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=03c9f4c31b9373cc9a5132b5653c3977422803b7;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Don't apply dictionary key policy on extension data (dotnet/corefx#39425) Commit migrated from https://github.com/dotnet/corefx/commit/743149dd45ddf6de418d945ca43cd4beadc81017 --- diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleDictionary.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleDictionary.cs index 6d426aa..92d4817 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleDictionary.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleDictionary.cs @@ -143,7 +143,8 @@ namespace System.Text.Json } else { - if (options.DictionaryKeyPolicy != null) + if (options.DictionaryKeyPolicy != null && + current.ExtensionDataStatus != ExtensionDataWriteStatus.Writing) // We do not convert extension data. { key = options.DictionaryKeyPolicy.ConvertName(key); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs index 280fd55..6152dc8 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs @@ -152,9 +152,9 @@ namespace System.Text.Json } // Allow redirection for generic types or the enum converter. - if (converter is JsonConverterFactory binder) + if (converter is JsonConverterFactory factory) { - converter = binder.GetConverterInternal(typeToConvert); + converter = factory.GetConverterInternal(typeToConvert); if (converter == null || converter.TypeToConvert == null) { throw new ArgumentNullException("typeToConvert"); diff --git a/src/libraries/System.Text.Json/tests/Serialization/ExtensionDataTests.cs b/src/libraries/System.Text.Json/tests/Serialization/ExtensionDataTests.cs index 42679c8..905b4fd 100644 --- a/src/libraries/System.Text.Json/tests/Serialization/ExtensionDataTests.cs +++ b/src/libraries/System.Text.Json/tests/Serialization/ExtensionDataTests.cs @@ -100,7 +100,7 @@ namespace System.Text.Json.Serialization.Tests obj = JsonSerializer.Deserialize(jsonWithProperty, options); Assert.Equal(1, obj.MyOverflow["MyIntMissing"].GetInt32()); - string json = JsonSerializer.Serialize(obj); + string json = JsonSerializer.Serialize(obj, options); Assert.Contains(@"""MyIntMissing"":1", json); } @@ -120,7 +120,7 @@ namespace System.Text.Json.Serialization.Tests obj = JsonSerializer.Deserialize(jsonWithPropertyCamelCased, options); Assert.Equal(1, obj.MyOverflow["myIntMissing"].GetInt32()); - string json = JsonSerializer.Serialize(obj); + string json = JsonSerializer.Serialize(obj, options); Assert.Contains(@"""myIntMissing"":1", json); } }