diff --git a/src/Argon/Linq/JTokenWriter.cs b/src/Argon/Linq/JTokenWriter.cs index 9b6d1953..a27e8c92 100644 --- a/src/Argon/Linq/JTokenWriter.cs +++ b/src/Argon/Linq/JTokenWriter.cs @@ -215,6 +215,12 @@ public override void WriteComment(string? text) /// public override void WriteValue(string? value) { + if (value == null) + { + WriteNull(); + return; + } + base.WriteValue(value); AddJValue(new(value)); } diff --git a/src/Tests/Issues/Issue2775.cs b/src/Tests/Issues/Issue2775.cs new file mode 100644 index 00000000..07f6c65d --- /dev/null +++ b/src/Tests/Issues/Issue2775.cs @@ -0,0 +1,28 @@ + public class Issue2775 + { + [Fact] + //https://github.com/JamesNK/Newtonsoft.Json/issues/2775 + public void TokenType() + { + var jObject = new JObject + { + { + "NullProperty", false ? "0" : null + } + }; + + var jToken = JToken.FromObject(jObject); + + Assert.Equal(JTokenType.Null, jToken.Children().Children().Single().Type); + + jObject = new() + { + { + "NullProperty", (string) null + } + }; + + jToken = JToken.FromObject(jObject); + Assert.Equal(JTokenType.Null, jToken.Children().Children().Single().Type); + } + } \ No newline at end of file