diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs index 8326c9a0..d2392e17 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs @@ -89,6 +89,66 @@ Newtonsoft.Json Error: 0 : Error! ]", traceJsonWriter.GetSerializedJsonMessage()); } + [Test] + public void WriteNullObject() + { + StringWriter sw = new StringWriter(); + TraceJsonWriter traceJsonWriter = new TraceJsonWriter(new JsonTextWriter(sw)); + traceJsonWriter.WriteStartArray(); + traceJsonWriter.WriteValue((object)null); + traceJsonWriter.WriteEndArray(); + + StringAssert.AreEqual(@"Serialized JSON: +[ + null +]", traceJsonWriter.GetSerializedJsonMessage()); + } + + [Test] + public void WriteNullString() + { + StringWriter sw = new StringWriter(); + TraceJsonWriter traceJsonWriter = new TraceJsonWriter(new JsonTextWriter(sw)); + traceJsonWriter.WriteStartArray(); + traceJsonWriter.WriteValue((string)null); + traceJsonWriter.WriteEndArray(); + + StringAssert.AreEqual(@"Serialized JSON: +[ + null +]", traceJsonWriter.GetSerializedJsonMessage()); + } + + [Test] + public void WriteNullUri() + { + StringWriter sw = new StringWriter(); + TraceJsonWriter traceJsonWriter = new TraceJsonWriter(new JsonTextWriter(sw)); + traceJsonWriter.WriteStartArray(); + traceJsonWriter.WriteValue((Uri)null); + traceJsonWriter.WriteEndArray(); + + StringAssert.AreEqual(@"Serialized JSON: +[ + null +]", traceJsonWriter.GetSerializedJsonMessage()); + } + + [Test] + public void WriteNullByteArray() + { + StringWriter sw = new StringWriter(); + TraceJsonWriter traceJsonWriter = new TraceJsonWriter(new JsonTextWriter(sw)); + traceJsonWriter.WriteStartArray(); + traceJsonWriter.WriteValue((byte[])null); + traceJsonWriter.WriteEndArray(); + + StringAssert.AreEqual(@"Serialized JSON: +[ + null +]", traceJsonWriter.GetSerializedJsonMessage()); + } + [Test] public void WriteJRaw() { diff --git a/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs b/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs index c37e4d4a..07cac70e 100644 --- a/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs +++ b/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs @@ -69,7 +69,14 @@ namespace Newtonsoft.Json.Serialization { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); - base.WriteValue(value); + if (value == null) + { + base.WriteUndefined(); + } + else + { + base.WriteValue(value); + } } public override void WriteValue(DateTime value) @@ -151,7 +158,14 @@ namespace Newtonsoft.Json.Serialization { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); - base.WriteValue(value); + if (value == null) + { + base.WriteUndefined(); + } + else + { + base.WriteValue(value); + } } } @@ -201,7 +215,14 @@ namespace Newtonsoft.Json.Serialization { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); - base.WriteValue(value); + if (value == null) + { + base.WriteUndefined(); + } + else + { + base.WriteValue(value); + } } public override void WriteValue(ushort value)