diff --git a/Src/Newtonsoft.Json/JsonObjectAttribute.cs b/Src/Newtonsoft.Json/JsonObjectAttribute.cs index bb3269a5..94d4aa6c 100644 --- a/Src/Newtonsoft.Json/JsonObjectAttribute.cs +++ b/Src/Newtonsoft.Json/JsonObjectAttribute.cs @@ -34,11 +34,11 @@ namespace Newtonsoft.Json public sealed class JsonObjectAttribute : JsonContainerAttribute { private MemberSerialization _memberSerialization = MemberSerialization.OptOut; - private NullValueHandling _nullValueHandling = NullValueHandling.Include; - + // yuck. can't set nullable properties on an attribute in C# // have to use this approach to get an unset default state internal Required? _itemRequired; + internal NullValueHandling? _nullValueHandling; /// /// Gets or sets the member serialization. @@ -56,7 +56,7 @@ namespace Newtonsoft.Json /// The null value handling. public NullValueHandling NullValueHandling { - get => _nullValueHandling; + get => _nullValueHandling ?? default(NullValueHandling); set => _nullValueHandling = value; } diff --git a/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs b/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs index d69aa1cb..4911de64 100644 --- a/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs +++ b/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs @@ -1511,7 +1511,7 @@ namespace Newtonsoft.Json.Serialization if (property.NullValueHandling == null && containerAttribute is JsonObjectAttribute objectAttribute) { - property.NullValueHandling = objectAttribute.NullValueHandling; + property.NullValueHandling = objectAttribute._nullValueHandling; } if (requiredAttribute != null)