public static void Main()
Date = DateTime.Parse("2019-08-01"),
string sysString = System.Text.Json.JsonSerializer.Serialize(o);
string newString = Newtonsoft.Json.JsonConvert.SerializeObject(o);
Console.WriteLine(sysString);
Console.WriteLine(newString);
var j = Newtonsoft.Json.Linq.JObject.Parse(sysString);
newString = System.Text.Json.JsonSerializer.Serialize(j);
Console.WriteLine(newString);
var opts = new System.Text.Json.JsonSerializerOptions
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
new JTokenJsonConverter()
newString = System.Text.Json.JsonSerializer.Serialize(j, opts);
Console.WriteLine(newString);
j = System.Text.Json.JsonSerializer.Deserialize<Newtonsoft.Json.Linq.JObject>(newString, opts);
Console.WriteLine(newString);
public class JTokenJsonConverter : System.Text.Json.Serialization.JsonConverter<Newtonsoft.Json.Linq.JToken>
public override bool CanConvert(Type typeToConvert) => typeof(Newtonsoft.Json.Linq.JToken).IsAssignableFrom(typeToConvert);
public override Newtonsoft.Json.Linq.JToken Read(
ref System.Text.Json.Utf8JsonReader reader,
System.Text.Json.JsonSerializerOptions options) {
using System.Text.Json.JsonDocument document = System.Text.Json.JsonDocument.ParseValue(ref reader);
return Newtonsoft.Json.Linq.JToken.Parse(document.RootElement.GetRawText());
public override void Write(
System.Text.Json.Utf8JsonWriter writer,
Newtonsoft.Json.Linq.JToken obj,
System.Text.Json.JsonSerializerOptions options) =>
writer.WriteRawValue(obj.ToString(options.WriteIndented ? Newtonsoft.Json.Formatting.Indented: Newtonsoft.Json.Formatting.None));