diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
index 46aa08c8..9d9789ba 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
@@ -151,6 +151,26 @@ namespace Newtonsoft.Json.Tests.Converters
return sw.ToString();
}
+#if !PORTABLE || NETSTANDARD1_3 || NETSTANDARD2_0
+ [Test]
+ public void DeserializeXmlNode_DefaultDate()
+ {
+ XmlDocument xmlNode = JsonConvert.DeserializeXmlNode("{Time: \"0001-01-01T00:00:00\"}");
+
+ Assert.AreEqual("", xmlNode.OuterXml);
+ }
+#endif
+
+#if !NET20
+ [Test]
+ public void DeserializeXNode_DefaultDate()
+ {
+ var xmlNode = JsonConvert.DeserializeXNode("{Time: \"0001-01-01T00:00:00\"}");
+
+ Assert.AreEqual("", xmlNode.ToString());
+ }
+#endif
+
[Test]
public void WriteJsonNull()
{
diff --git a/Src/Newtonsoft.Json/Converters/BinaryConverter.cs b/Src/Newtonsoft.Json/Converters/BinaryConverter.cs
index 97e20d8d..83f0717b 100644
--- a/Src/Newtonsoft.Json/Converters/BinaryConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/BinaryConverter.cs
@@ -74,9 +74,9 @@ namespace Newtonsoft.Json.Converters
}
#endif
#if HAVE_ADO_NET
- if (value is SqlBinary)
+ if (value is SqlBinary binary)
{
- return ((SqlBinary)value).Value;
+ return binary.Value;
}
#endif
diff --git a/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs b/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs
index 533e113d..5571c37f 100644
--- a/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs
@@ -46,8 +46,7 @@ namespace Newtonsoft.Json.Converters
{
BsonObjectId objectId = (BsonObjectId)value;
- BsonWriter bsonWriter = writer as BsonWriter;
- if (bsonWriter != null)
+ if (writer is BsonWriter bsonWriter)
{
bsonWriter.WriteObjectId(objectId.Value);
}
diff --git a/Src/Newtonsoft.Json/Converters/DataTableConverter.cs b/Src/Newtonsoft.Json/Converters/DataTableConverter.cs
index ffb7af01..794a0f29 100644
--- a/Src/Newtonsoft.Json/Converters/DataTableConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/DataTableConverter.cs
@@ -94,9 +94,7 @@ namespace Newtonsoft.Json.Converters
return null;
}
- DataTable dt = existingValue as DataTable;
-
- if (dt == null)
+ if (!(existingValue is DataTable dt))
{
// handle typed datasets
dt = (objectType == typeof(DataTable))
diff --git a/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs b/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs
index 89f9c257..aeeb87a0 100644
--- a/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs
@@ -71,8 +71,7 @@ namespace Newtonsoft.Json.Converters
if (keyValueType != null)
{
- string valueJson;
- if (JsonSerializerInternalWriter.TryConvertToString(keyValue, keyValueType, out valueJson))
+ if (JsonSerializerInternalWriter.TryConvertToString(keyValue, keyValueType, out string valueJson))
{
writer.WriteValue(valueJson);
}
diff --git a/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs b/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs
index 312a8595..7f058df8 100644
--- a/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs
@@ -80,10 +80,8 @@ namespace Newtonsoft.Json.Converters
{
string text;
- if (value is DateTime)
+ if (value is DateTime dateTime)
{
- DateTime dateTime = (DateTime)value;
-
if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
|| (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
{
@@ -93,9 +91,8 @@ namespace Newtonsoft.Json.Converters
text = dateTime.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
}
#if HAVE_DATE_TIME_OFFSET
- else if (value is DateTimeOffset)
+ else if (value is DateTimeOffset dateTimeOffset)
{
- DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
|| (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
{
@@ -149,9 +146,9 @@ namespace Newtonsoft.Json.Converters
}
// converter is expected to return a DateTime
- if (reader.Value is DateTimeOffset)
+ if (reader.Value is DateTimeOffset offset)
{
- return ((DateTimeOffset)reader.Value).DateTime;
+ return offset.DateTime;
}
#endif
diff --git a/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs b/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs
index 40b18dee..146c3ea5 100644
--- a/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs
@@ -44,16 +44,14 @@ namespace Newtonsoft.Json.Converters
{
long ticks;
- if (value is DateTime)
+ if (value is DateTime dateTime)
{
- DateTime dateTime = (DateTime)value;
DateTime utcDateTime = dateTime.ToUniversalTime();
ticks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(utcDateTime);
}
#if HAVE_DATE_TIME_OFFSET
- else if (value is DateTimeOffset)
+ else if (value is DateTimeOffset dateTimeOffset)
{
- DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime();
ticks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(utcDateTimeOffset.UtcDateTime);
}
diff --git a/Src/Newtonsoft.Json/Converters/RegexConverter.cs b/Src/Newtonsoft.Json/Converters/RegexConverter.cs
index c63e6cce..8dd20243 100644
--- a/Src/Newtonsoft.Json/Converters/RegexConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/RegexConverter.cs
@@ -57,8 +57,7 @@ namespace Newtonsoft.Json.Converters
Regex regex = (Regex)value;
#pragma warning disable 618
- BsonWriter bsonWriter = writer as BsonWriter;
- if (bsonWriter != null)
+ if (writer is BsonWriter bsonWriter)
{
WriteBson(bsonWriter, regex);
}
diff --git a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
index 63f0a03c..4dd4f4b7 100644
--- a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
@@ -1867,40 +1867,44 @@ namespace Newtonsoft.Json.Converters
return reader.Value?.ToString();
case JsonToken.Integer:
#if HAVE_BIG_INTEGER
- if (reader.Value is BigInteger)
+ if (reader.Value is BigInteger i)
{
- return ((BigInteger)reader.Value).ToString(CultureInfo.InvariantCulture);
+ return i.ToString(CultureInfo.InvariantCulture);
}
#endif
return XmlConvert.ToString(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
case JsonToken.Float:
- if (reader.Value is decimal)
+ {
+ if (reader.Value is decimal d)
{
- return XmlConvert.ToString((decimal)reader.Value);
+ return XmlConvert.ToString(d);
}
- if (reader.Value is float)
+ if (reader.Value is float f)
{
- return XmlConvert.ToString((float)reader.Value);
+ return XmlConvert.ToString(f);
}
return XmlConvert.ToString(Convert.ToDouble(reader.Value, CultureInfo.InvariantCulture));
+ }
case JsonToken.Boolean:
return XmlConvert.ToString(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
case JsonToken.Date:
+ {
#if HAVE_DATE_TIME_OFFSET
- if (reader.Value is DateTimeOffset)
+ if (reader.Value is DateTimeOffset offset)
{
- return XmlConvert.ToString((DateTimeOffset)reader.Value);
+ return XmlConvert.ToString(offset);
}
#endif
DateTime d = Convert.ToDateTime(reader.Value, CultureInfo.InvariantCulture);
-#if !PORTABLE
+#if !PORTABLE || NETSTANDARD1_3
return XmlConvert.ToString(d, DateTimeUtils.ToSerializationMode(d.Kind));
#else
- return XmlConvert.ToString(d, DateTimeUtils.ToDateTimeFormat(d.Kind));
+ return d.ToString(DateTimeUtils.ToDateTimeFormat(d.Kind), CultureInfo.InvariantCulture);
#endif
+ }
case JsonToken.Bytes:
return Convert.ToBase64String((byte[])reader.Value);
case JsonToken.Null:
@@ -1934,8 +1938,7 @@ namespace Newtonsoft.Json.Converters
{
foreach (IXmlNode childNode in nestedArrayElement.ChildNodes)
{
- IXmlElement element = childNode as IXmlElement;
- if (element != null && element.LocalName == propertyName)
+ if (childNode is IXmlElement element && element.LocalName == propertyName)
{
AddJsonArrayAttribute(element, document);
break;
@@ -2005,8 +2008,7 @@ namespace Newtonsoft.Json.Converters
attributeValue = ConvertTokenToXmlValue(reader);
attributeNameValues.Add(attributeName, attributeValue);
- string namespacePrefix;
- if (IsNamespaceAttribute(attributeName, out namespacePrefix))
+ if (IsNamespaceAttribute(attributeName, out string namespacePrefix))
{
manager.AddNamespace(namespacePrefix, attributeValue);
}
@@ -2205,8 +2207,7 @@ namespace Newtonsoft.Json.Converters
{
foreach (IXmlNode childNode in currentNode.ChildNodes)
{
- IXmlElement element = childNode as IXmlElement;
- if (element != null && element.LocalName == propertyName)
+ if (childNode is IXmlElement element && element.LocalName == propertyName)
{
AddJsonArrayAttribute(element, document);
break;
diff --git a/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs b/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
index 807c3a1a..19e6ce30 100644
--- a/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
+++ b/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
@@ -58,7 +58,7 @@ namespace Newtonsoft.Json.Utilities
#endif
}
-#if !(PORTABLE40 || PORTABLE)
+#if !(PORTABLE40 || PORTABLE) || NETSTANDARD1_3
public static XmlDateTimeSerializationMode ToSerializationMode(DateTimeKind kind)
{
switch (kind)