Strictly typed JSON representation
The missing part is a JsonConverter:

[JsonConverter(typeof(JsonTConverter))]
public struct Json&lt;T&gt; 
{


And:

public class JsonTConverter : JsonConverter
{
    public override bool CanConvert(Type objectType) =&gt;
        objectType.IsConstructedGenericType &amp;&amp;
        objectType.GetGenericTypeDefinition() == typeof(Json&lt;&gt;);

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) =&gt;
        Activator.CreateInstance(objectType, reader.Value);

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) =&gt;
        writer.WriteValue(value.ToString());
}