using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
public static void Test()
var b0 = JToken.Equals(nullStr, nullToken);
new JProperty("str", nullStr),
new JProperty("tkn", nullToken),
new JProperty("ltrl", null),
var b1 = JToken.Equals(jObj["str"], jObj["tkn"]);
var b2 = JToken.Equals(jObj["tkn"], jObj["ltrl"]);
var b3 = JToken.Equals(jObj["str"], jObj["ltrl"]);
var t0 = jObj["str"].Type;
var t1 = jObj["tkn"].Type;
var t2 = jObj["ltrl"].Type;
var parsedJObj = JToken.Parse(jObj.ToString());
var b4 = JToken.Equals(parsedJObj["str"], parsedJObj["tkn"]);
var b5 = JToken.Equals(parsedJObj["tkn"], parsedJObj["ltrl"]);
var b6 = JToken.Equals(parsedJObj["str"], parsedJObj["ltrl"]);
var t3 = parsedJObj["str"].Type;
var t4 = parsedJObj["tkn"].Type;
var t5 = parsedJObj["ltrl"].Type;
Console.WriteLine($@"null string = null token: {b0}
jObj[str] = jObj[tkn]: {b1}
jObj[tkn] = jObj[ltrl]: {b2}
jObj[str] = jObj[ltrl]: {b3}
parsedJObj[str] = parsedJObj[tkn]: {b4}
parsedJObj[tkn] = parsedJObj[ltrl]: {b5}
parsedJObj[str] = parsedJObj[ltrl]: {b6}
parsedJObj[str].Type: {t3}
parsedJObj[tkn].Type: {t4}
parsedJObj[ltrl].Type: {t5}");
static string GetJson() =>@"
public static partial class JsonExtensions
public static JsonReader AssertTokenType(this JsonReader reader, JsonToken tokenType) =>
reader.TokenType == tokenType ? reader : throw new JsonSerializationException(string.Format("Unexpected token {0}, expected {1}", reader.TokenType, tokenType));
public static JsonReader ReadToContentAndAssert(this JsonReader reader) =>
reader.ReadAndAssert().MoveToContentAndAssert();
public static JsonReader MoveToContentAndAssert(this JsonReader reader)
ArgumentNullException.ThrowIfNull(reader);
if (reader.TokenType == JsonToken.None)
while (reader.TokenType == JsonToken.Comment)
public static JsonReader ReadAndAssert(this JsonReader reader)
ArgumentNullException.ThrowIfNull(reader);
throw new JsonReaderException("Unexpected end of JSON stream.");
public static void Main()
Console.WriteLine("Environment version: {0} ({1}), {2}", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("{0} version: {1}", typeof(JsonSerializer).Namespace, typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");