diff --git a/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs index fa22a7f9..4a541d41 100644 --- a/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs +++ b/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs @@ -1394,5 +1394,23 @@ Parameter name: arrayIndex")] Assert.AreEqual("Name2", value); } + + [Test] + public void WriteObjectNullDBNullValue() + { + DBNull dbNull = DBNull.Value; + JValue v = new JValue(dbNull); + Assert.AreEqual(DBNull.Value, v.Value); + Assert.AreEqual(JTokenType.Null, v.Type); + + JObject o = new JObject(); + o["title"] = v; + + string output = o.ToString(); + + Assert.AreEqual(@"{ + ""title"": null +}", output); + } } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs index 0490cd5c..8cacf95e 100644 --- a/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs +++ b/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs @@ -56,6 +56,10 @@ namespace Newtonsoft.Json.Tests.Linq v.Value = "Pie"; Assert.AreEqual("Pie", v.Value); Assert.AreEqual(JTokenType.String, v.Type); + + v.Value = DBNull.Value; + Assert.AreEqual(DBNull.Value, v.Value); + Assert.AreEqual(JTokenType.Null, v.Type); } [Test] diff --git a/Src/Newtonsoft.Json/Linq/JValue.cs b/Src/Newtonsoft.Json/Linq/JValue.cs index 275c211f..e7312077 100644 --- a/Src/Newtonsoft.Json/Linq/JValue.cs +++ b/Src/Newtonsoft.Json/Linq/JValue.cs @@ -203,6 +203,8 @@ namespace Newtonsoft.Json.Linq { if (value == null) return JTokenType.Null; + else if (value == DBNull.Value) + return JTokenType.Null; else if (value is string) return GetStringValueType(current); else if (value is long || value is int || value is short || value is sbyte