<PackageReference Include="Newtonsoft.Json" Version="5.0.8" />

JsonProperty

public class JsonProperty
Maps a JSON property to a .NET member or constructor parameter.
using Newtonsoft.Json.Utilities; using System; namespace Newtonsoft.Json.Serialization { public class JsonProperty { internal Required? _required; internal bool _hasExplicitDefaultValue; internal object _defaultValue; private string _propertyName; private bool _skipPropertyNameEscape; internal JsonContract PropertyContract { get; set; } public string PropertyName { get { return _propertyName; } set { _propertyName = value; CalculateSkipPropertyNameEscape(); } } public Type DeclaringType { get; set; } public int? Order { get; set; } public string UnderlyingName { get; set; } public IValueProvider ValueProvider { get; set; } public Type PropertyType { get; set; } public JsonConverter Converter { get; set; } public JsonConverter MemberConverter { get; set; } public bool Ignored { get; set; } public bool Readable { get; set; } public bool Writable { get; set; } public bool HasMemberAttribute { get; set; } public object DefaultValue { get { return _defaultValue; } set { _hasExplicitDefaultValue = true; _defaultValue = value; } } public Required Required { get { return _required ?? Required.Default; } set { _required = value; } } public bool? IsReference { get; set; } public NullValueHandling? NullValueHandling { get; set; } public DefaultValueHandling? DefaultValueHandling { get; set; } public ReferenceLoopHandling? ReferenceLoopHandling { get; set; } public ObjectCreationHandling? ObjectCreationHandling { get; set; } public TypeNameHandling? TypeNameHandling { get; set; } public Predicate<object> ShouldSerialize { get; set; } public Predicate<object> GetIsSpecified { get; set; } public Action<object, object> SetIsSpecified { get; set; } public JsonConverter ItemConverter { get; set; } public bool? ItemIsReference { get; set; } public TypeNameHandling? ItemTypeNameHandling { get; set; } public ReferenceLoopHandling? ItemReferenceLoopHandling { get; set; } private void CalculateSkipPropertyNameEscape() { if (_propertyName == null) _skipPropertyNameEscape = false; else { _skipPropertyNameEscape = true; string propertyName = _propertyName; int num = 0; while (true) { if (num >= propertyName.Length) return; char c = propertyName[num]; if (!char.IsLetterOrDigit(c) && c != '_' && c != '@') break; num++; } _skipPropertyNameEscape = false; } } internal object GetResolvedDefaultValue() { if (!_hasExplicitDefaultValue && PropertyType != (Type)null) return ReflectionUtils.GetDefaultValue(PropertyType); return _defaultValue; } public override string ToString() { return PropertyName; } internal void WritePropertyName(JsonWriter writer) { if (_skipPropertyNameEscape) writer.WritePropertyName(PropertyName, false); else writer.WritePropertyName(PropertyName); } } }