My app send my location every time. when I disable geolocation. i want send {"latitude":null,"longitude":null} but sent {}
Model
@Serializable
data class PointBody(
@Json(name = "latitude") val latitude: Double?,
@Json(name = "longitude") val longitude: Double?
)
Request
@POST(Path.LOCATION)
suspend fun sendPoint(
@Body point: PointBody
)
Retorift
private fun provideRetrofit(moshi: Moshi, client: OkHttpClient) = Retrofit.Builder()
.client(client)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.baseUrl("Base")
.build()
Moshi
private fun provideMoshi(): Moshi {
return Moshi
.Builder()
.add(KotlinJsonAdapterFactory())
.build()
}
You can solve just adding withNullSerialization()
function to MoshiConverterFactory
.
@Singleton
@Provides
fun provideMoshi(): Moshi =
Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
@Singleton
@Provides
fun provideMoshiConverterFactory(moshi: Moshi): MoshiConverterFactory =
MoshiConverterFactory.create(moshi).withNullSerialization()
Code From MoshiConverterFactory.java
...
/** Return a new factory which includes null values into the serialized JSON. */
public MoshiConverterFactory withNullSerialization() {
return new MoshiConverterFactory(moshi, lenient, failOnUnknown, true);
}
...
Please check MoshiConverterFactory.java for further information.