Fix JTokenReader not using DateTimeZoneHandling

This commit is contained in:
James Newton-King
2018-10-08 10:06:19 +13:00
parent 9b98a11db2
commit 5633e17fc1
3 changed files with 16 additions and 13 deletions
@@ -109,7 +109,5 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(DateTimeKind.Unspecified, c3.Value.Kind);
Assert.AreEqual(DateTimeKind.Unspecified, c4.Value.Kind);
}
}
}
+16 -6
View File
@@ -210,8 +210,16 @@ namespace Newtonsoft.Json.Linq
SetToken(JsonToken.Undefined, ((JValue)token).Value);
break;
case JTokenType.Date:
SetToken(JsonToken.Date, ((JValue)token).Value);
break;
{
object v = ((JValue)token).Value;
if (v is DateTime dt)
{
v = DateTimeUtils.EnsureDateTime(dt, DateTimeZoneHandling);
}
SetToken(JsonToken.Date, v);
break;
}
case JTokenType.Raw:
SetToken(JsonToken.Raw, ((JValue)token).Value);
break;
@@ -222,10 +230,12 @@ namespace Newtonsoft.Json.Linq
SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
break;
case JTokenType.Uri:
object v = ((JValue)token).Value;
Uri uri = v as Uri;
SetToken(JsonToken.String, uri != null ? uri.OriginalString : SafeToString(v));
break;
{
object v = ((JValue)token).Value;
Uri uri = v as Uri;
SetToken(JsonToken.String, uri != null ? uri.OriginalString : SafeToString(v));
break;
}
case JTokenType.TimeSpan:
SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
break;
@@ -990,11 +990,6 @@ namespace Newtonsoft.Json.Serialization
}
}
if (value is DateTime dt)
{
return DateTimeUtils.EnsureDateTime(dt, reader.DateTimeZoneHandling);
}
return value;
}