diff --git a/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs b/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs index 346404e4..c604c0c7 100644 --- a/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs +++ b/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs @@ -55,6 +55,24 @@ namespace Newtonsoft.Json.Tests.Linq [TestFixture] public class LinqToJsonTest : TestFixtureBase { + [Test] + public void FromObjectGuid() + { + var token1 = new JValue(Guid.NewGuid()); + var token2 = JToken.FromObject(token1); + Assert.IsTrue(JToken.DeepEquals(token1, token2)); + Assert.AreEqual(token1.Type, token2.Type); + } + + [Test] + public void FromObjectTimeSpan() + { + var token1 = new JValue(TimeSpan.FromDays(1)); + var token2 = JToken.FromObject(token1); + Assert.IsTrue(JToken.DeepEquals(token1, token2)); + Assert.AreEqual(token1.Type, token2.Type); + } + [Test] public void ToObject_Guid() { diff --git a/Src/Newtonsoft.Json/Linq/JValue.cs b/Src/Newtonsoft.Json/Linq/JValue.cs index 8dd1297e..575dbe37 100644 --- a/Src/Newtonsoft.Json/Linq/JValue.cs +++ b/Src/Newtonsoft.Json/Linq/JValue.cs @@ -819,11 +819,13 @@ namespace Newtonsoft.Json.Linq writer.WriteValue((byte[])_value); return; case JTokenType.Guid: + writer.WriteValue((_value != null) ? (Guid?)_value : null); + return; case JTokenType.TimeSpan: - writer.WriteValue((_value != null) ? _value.ToString() : null); + writer.WriteValue((_value != null) ? (TimeSpan?)_value : null); return; case JTokenType.Uri: - writer.WriteValue((_value != null) ? ((Uri)_value).OriginalString : null); + writer.WriteValue((Uri)_value); return; }