-Changed MemberConverter to be obsolete
This commit is contained in:
@@ -10109,6 +10109,58 @@ This is just junk, though.";
|
||||
|
||||
Assert.AreEqual(propertyValue, testObject.GetPropertyValue(), "MyProperty should be populated");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void JsonPropertyConverter()
|
||||
{
|
||||
DateTime dt = new DateTime(2000, 12, 20, 0, 0, 0, DateTimeKind.Utc);
|
||||
|
||||
JsonSerializerSettings settings = new JsonSerializerSettings
|
||||
{
|
||||
ContractResolver = new JsonPropertyConverterContractResolver(),
|
||||
Formatting = Formatting.Indented
|
||||
};
|
||||
|
||||
JsonPropertyConverterTestClass c1 = new JsonPropertyConverterTestClass
|
||||
{
|
||||
NormalDate = dt,
|
||||
JavaScriptDate = dt
|
||||
};
|
||||
|
||||
string json = JsonConvert.SerializeObject(c1, settings);
|
||||
|
||||
StringAssert.AreEqual(@"{
|
||||
""NormalDate"": ""2000-12-20T00:00:00Z"",
|
||||
""JavaScriptDate"": new Date(
|
||||
977270400000
|
||||
)
|
||||
}", json);
|
||||
|
||||
JsonPropertyConverterTestClass c2 = JsonConvert.DeserializeObject<JsonPropertyConverterTestClass>(json, settings);
|
||||
|
||||
Assert.AreEqual(dt, c2.NormalDate);
|
||||
Assert.AreEqual(dt, c2.JavaScriptDate);
|
||||
}
|
||||
}
|
||||
|
||||
public class JsonPropertyConverterTestClass
|
||||
{
|
||||
public DateTime NormalDate { get; set; }
|
||||
public DateTime JavaScriptDate { get; set; }
|
||||
}
|
||||
|
||||
public class JsonPropertyConverterContractResolver : DefaultContractResolver
|
||||
{
|
||||
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
|
||||
{
|
||||
JsonProperty property = base.CreateProperty(member, memberSerialization);
|
||||
if (property.PropertyName == "JavaScriptDate")
|
||||
{
|
||||
property.Converter = new JavaScriptDateTimeConverter();
|
||||
}
|
||||
|
||||
return property;
|
||||
}
|
||||
}
|
||||
|
||||
public class BaseClassWithProtectedVirtual
|
||||
|
||||
@@ -709,7 +709,6 @@ namespace Newtonsoft.Json.Serialization
|
||||
{
|
||||
property.PropertyName = (property.PropertyName != parameterInfo.Name) ? property.PropertyName : matchingMemberProperty.PropertyName;
|
||||
property.Converter = property.Converter ?? matchingMemberProperty.Converter;
|
||||
property.MemberConverter = property.MemberConverter ?? matchingMemberProperty.MemberConverter;
|
||||
|
||||
if (!property._hasExplicitDefaultValue && matchingMemberProperty._hasExplicitDefaultValue)
|
||||
{
|
||||
@@ -1560,7 +1559,6 @@ namespace Newtonsoft.Json.Serialization
|
||||
// resolve converter for property
|
||||
// the class type might have a converter but the property converter takes precedence
|
||||
property.Converter = JsonTypeReflector.GetJsonConverter(attributeProvider);
|
||||
property.MemberConverter = JsonTypeReflector.GetJsonConverter(attributeProvider);
|
||||
|
||||
DefaultValueAttribute defaultValueAttribute = JsonTypeReflector.GetAttribute<DefaultValueAttribute>(attributeProvider);
|
||||
if (defaultValueAttribute != null)
|
||||
|
||||
@@ -122,7 +122,12 @@ namespace Newtonsoft.Json.Serialization
|
||||
/// Gets or sets the member converter.
|
||||
/// </summary>
|
||||
/// <value>The member converter.</value>
|
||||
public JsonConverter MemberConverter { get; set; }
|
||||
[Obsolete("MemberConverter is obsolete. Use Converter instead.")]
|
||||
public JsonConverter MemberConverter
|
||||
{
|
||||
get { return Converter; }
|
||||
set { Converter = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> is ignored.
|
||||
|
||||
@@ -1111,7 +1111,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
|
||||
if (propertyContract != property.PropertyContract)
|
||||
{
|
||||
propertyConverter = GetConverter(propertyContract, property.MemberConverter, containerContract, containerProperty);
|
||||
propertyConverter = GetConverter(propertyContract, property.Converter, containerContract, containerProperty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1823,7 +1823,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
property.PropertyContract = GetContractSafe(property.PropertyType);
|
||||
}
|
||||
|
||||
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter, null, null);
|
||||
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.Converter, null, null);
|
||||
|
||||
if (!SetPropertyValue(property, propertyConverter, null, member, reader, newObject))
|
||||
{
|
||||
@@ -2160,7 +2160,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
property.PropertyContract = GetContractSafe(property.PropertyType);
|
||||
}
|
||||
|
||||
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter, contract, containerProperty);
|
||||
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.Converter, contract, containerProperty);
|
||||
|
||||
if (!reader.ReadForType(property.PropertyContract, propertyConverter != null))
|
||||
{
|
||||
@@ -2340,7 +2340,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
property.PropertyContract = GetContractSafe(property.PropertyType);
|
||||
}
|
||||
|
||||
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter, contract, member);
|
||||
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.Converter, contract, member);
|
||||
|
||||
if (!reader.ReadForType(property.PropertyContract, propertyConverter != null))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user