Я пишу приложение для Android Kotlin в Android Studio, которое взаимодействует с API-интерфейсом Firebase.
Я решил использовать Fuel для HTTP-клиента и, в частности, fuel-gson для сериализации.
Сериализация основных типов, таких как Strings / Ints, прошла хорошо, но когда я добавил LocalDate в свой класс данных, поле в базе данных firestore закончилось как пустая карта {}
.
Я проверил это в REPL и получил:
import com.google.gson.Gson
import java.time.LocalDate
Gson().toJson(LocalDate.now())
res0: kotlin.String! = {"year":2019,"month":6,"day":20}
Так что сериализация LocalDate, похоже, работала просто отлично, но потом, когда я попытался зарегистрировать ее в коде с помощью Log.d("GSON", Gson().toJson(LocalDate.now()))
, результат снова был:
2019-06-20 23:49:26.740 12653-12653/com.utn.nutricionista D/GSON: {}
Я подумал, что мог как-то испортить свои зависимости, поэтому я попробовал то же самое в чистом проекте сразу после его создания, и все же результат был тем же.
Этот новый проект имеет последнюю версию Android API (Q) и com.google.code.gson:gson:2.8.5
в качестве зависимости.
package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.google.gson.Gson
import java.time.LocalDateTime
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("GSON", Gson().toJson(LocalDateTime.now()))
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
Буду очень признателен за понимание того, что происходит и что нужно сделать, чтобы это исправить!