title: moshi custom qualifier annotation to serialise null on one property only
body: <p>I'd like to serialise null for only one property in my JSON body that is going on a PUT. I don't want to serialize null for any other types in the object. Model class is like this</p>
  
  <pre><code>@Parcel
  class User @ParcelConstructor constructor(var college: College?,
                                            var firstname: String?,
                                            var lastname: String?,
                                            var email: String?,
                                            var active: Boolean = true,
                                            var updatedAt: String?,
                                            var gender: String?,
                                            var picture: String?,
                                            var id: String?,
                                            @field: [CollegeField] var collegeInput: String?,
                                            @field: [CollegeField] var otherCollege: String?,)
  </code></pre>
  
  <p>I only want to serialise collegeInput and otherCollege fields if either of them are null. For example </p>
  
  <pre><code>val user = User(firstname = "foo", lastname=null, collegeInput="abcd", otherCollege = null)
  </code></pre>
  
  <p>Json will look something like this:</p>
  
  <pre><code>{"user":{
    "firstname": "foo",
    "collegeInput": "abcd",
    "otherCollege": null
  }}
  </code></pre>
  
  <p>Where otherCollege is null, lastname is omitted from the object as by default moshi does not serialise nulls which is what I want, but qualifer fields should be serialized with null values</p>
  
  <p>I tried using </p>
  
  <pre><code>class UserAdapter {
  @FromJson
  @CollegeField
  @Throws(Exception::class)
  fun fromJson(reader: JsonReader): String? {
      return when (reader.peek()) {
          JsonReader.Token.NULL -&gt;
              reader.nextNull()
          JsonReader.Token.STRING -&gt; reader.nextString()
          else -&gt; {
              reader.skipValue() // or throw
              null
          }
      }
  }
  
  @ToJson
  @Throws(IOException::class)
  fun toJson(@CollegeField b: String?): String? {
      return b
  }
  
  
  @Retention(AnnotationRetention.RUNTIME)
  @JsonQualifier
  annotation class CollegeField
  </code></pre>
  
  <p>I added the adapter to moshi but it never gets called</p>
  
  <pre><code>@Provides
  @Singleton
  fun provideMoshi(): Moshi {
      return Moshi.Builder()
              .add(UserAdapter())
              .build()
  }
  
  @Provides
  @Singleton
  fun provideRetrofit(client: OkHttpClient, moshi: Moshi, apiConfig: ApiConfig): Retrofit {
      return Retrofit.Builder()
              .baseUrl(apiConfig.baseUrl)
              .client(client)
              .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
              .addConverterFactory(ScalarsConverterFactory.create())
              .addConverterFactory(MoshiConverterFactory.create(moshi))
              .build()
  }
  </code></pre>