Skip to content

Commit 5702581

Browse files
authored
Fix: Null String being reported as String rather than JTokenType.Null (#2796)
Fixes #2775
1 parent c908de3 commit 5702581

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System.Linq;
2+
using Newtonsoft.Json.Linq;
3+
#if DNXCORE50
4+
using Xunit;
5+
using Test = Xunit.FactAttribute;
6+
using Assert = Newtonsoft.Json.Tests.XUnitAssert;
7+
using TestCase = Xunit.InlineDataAttribute;
8+
#else
9+
using NUnit.Framework;
10+
#endif
11+
12+
namespace Newtonsoft.Json.Tests.Issues
13+
{
14+
public class Issue2775
15+
{
16+
[Test]
17+
//https://github.com/JamesNK/Newtonsoft.Json/issues/2775
18+
public void TokenType()
19+
{
20+
var jObject = new JObject { { "NullProperty", false ? "0" : null } };
21+
22+
var jToken = JToken.FromObject(jObject);
23+
24+
Assert.AreEqual(JTokenType.Null, jToken.Children().Children().Single().Type);
25+
26+
jObject = new JObject { { "NullProperty", (string)null } };
27+
28+
jToken = JToken.FromObject(jObject);
29+
Assert.AreEqual(JTokenType.Null, jToken.Children().Children().Single().Type);
30+
}
31+
}
32+
}

Src/Newtonsoft.Json/Linq/JTokenWriter.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,12 @@ public override void WriteComment(string? text)
281281
/// <param name="value">The <see cref="String"/> value to write.</param>
282282
public override void WriteValue(string? value)
283283
{
284+
if (value == null)
285+
{
286+
WriteNull();
287+
return;
288+
}
289+
284290
base.WriteValue(value);
285291
AddJValue(new JValue(value), JsonToken.String);
286292
}

0 commit comments

Comments
 (0)