From 2abc38a0ad56cbe166ee26a26846fee269938a2a Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Fri, 30 Dec 2016 15:06:52 +0000 Subject: [PATCH] Don't write duplicate nulls to trace for object or Uri Fixes #1120 --- .../Serialization/TraceWriterTests.cs | 45 +++++++++++++++++++ .../Serialization/TraceJsonWriter.cs | 18 +++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs index 8326c9a0..3c6a546a 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs @@ -89,6 +89,51 @@ 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 WriteJRaw() { diff --git a/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs b/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs index c37e4d4a..52818a3a 100644 --- a/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs +++ b/Src/Newtonsoft.Json/Serialization/TraceJsonWriter.cs @@ -151,7 +151,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 +208,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)