title: How to force JsonConverter.WriteJson() to be called for a null value
body: <p>I want to wrap some properties in a JSON object with some metadata, regardless if it's null or not. However, my custom <code>JsonConverter.WriteJson</code> override is not called in case the property is <code>null</code>.</p>
  
  <p>What I get when property is not null:</p>
  
  <pre><code>{"Prop":{"Version":1, "Object":{"Content":"abc"}}}
  </code></pre>
  
  <p>What I <em>get</em> when it's null:</p>
  
  <pre><code>{"Prop":null}
  </code></pre>
  
  <p>What I <em>want</em> when it's null:</p>
  
  <pre><code>{"Prop":{"Version":1, "Object":null}}
  </code></pre>
  
  <p>Due to <code>WriteJson</code> never being called for null values, I do not get the opportunity to control this behavior. Is there any way to force this?</p>
  
  <p>Note that I want to know if this is possible to do with e.g converters or contractresolvers, I can't/don't want to change the <code>MyContent</code> or <code>Wrap</code> classes (see below).</p>
  
  <pre><code>class VersioningJsonConverter : JsonConverter
  {
      //Does not get called if value is null !!
      public override void WriteJson(JsonWriter writer, Object value, JsonSerializer serializer)
      {
          writer.WriteStartObject();
          writer.WritePropertyName("v");
          writer.WriteValue(1);
          writer.WritePropertyName("o");
          if(value == null)
          {
              //never happens
              writer.WriteNull();
          }
          else
          {
              writer.WriteStartObject();
              writer.WritePropertyName("Content");
              writer.WriteValue((value as MyContent).Content);                
              writer.WriteEndObject();
          }
          writer.WriteEndObject();
      }
      public override Object ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
          =&gt; throw new NotImplementedException();
      public override Boolean CanConvert(Type objectType) =&gt; objectType == typeof(MyContent);
      public override Boolean CanRead =&gt; false;
  }
  
  public class MyContent
  {
      public String Content {get;set;}
  }
  
  public class Wrap
  {
      public MyContent Prop {get;set;}
  }
  </code></pre>