using System.Text.Json.Serialization;
public static void Main()
Outer _Outer = new Outer{ A = "a", B = new Inner { C = JsonSerializer.Serialize(new SuperInner{ D = "d" }) } };
Console.WriteLine(JsonSerializer.Serialize(_Outer));
Outer2 _Outer2 = new Outer2{ A = "a", B = new Inner2 { C = JsonSerializer.Serialize(new SuperInner{ D = "d" }) } };
Console.WriteLine(JsonSerializer.Serialize(_Outer2));
public string A {get;set;}
public Inner B {get;set;}
public string C {get;set;}
public string A {get;set;}
public Inner2 B {get;set;}
[JsonConverter(typeof(RawJsonConverter))]
public string C {get;set;}
public string D {get;set;}
public sealed class RawJsonConverter : JsonConverter<string>
public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
if (JsonDocument.TryParseValue(ref reader, out JsonDocument _Document))
return _Document.RootElement.GetRawText();
return reader.GetString();
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
writer.WriteRawValue(value);
writer.WriteStringValue(value);