Я использую Moshi в своем приложении и для своих Date
, которые я получу от сервера, я только что определил пользовательский адаптер для Moshi, но в результате получится, что когда моя дата будет нулевой, Moshi
не могу конвертировать JSON
в мою модель, поэтому выдает ошибку, как показано ниже:
Это мой класс данных:
@JsonClass(generateAdapter = true)
data class BoughtSmart(
var id: Int?,
var title: String?,
@Json(name = "start_date") var startDate: Date?,
@Json(name = "expire_date") var expireDate: Date?,
@Json(name = "created_time") var createdTime: Date?,
@Json(name = "modified_time") var modifiedTime: Date?
)
Мой адаптер Moshi Custome:
class CustomDateAdapter : JsonAdapter<Date>() {
private val dateFormat = SimpleDateFormat(SERVER_FORMAT, Locale.ENGLISH)
private val TAG = CustomDateAdapter::class.java.simpleName
@FromJson
override fun fromJson(reader: JsonReader?): Date? {
var dateAsString = ""
reader?.apply {
try {
dateAsString = nextString()
} catch (e: Exception) {
Log.e(TAG, "Error [${e}]")
}
}
return dateFormat.parse(dateAsString)
}
@ToJson
override fun toJson(writer: JsonWriter, value: Date?) {
if (value != null) {
writer.value(value.toString())
}
}
companion object {
const val SERVER_FORMAT = ("yyyy-MM-dd'T'HH:mm:ss")
}
}
Форма ошибки Моши:
com.squareup.moshi.JsonDataException: Expected a string but was NULL at path $.results[0].expire_date