Я пытаюсь получить объект из MongoDB, который содержит объект ZonedDateTime Threeten lib, используя модификацию 2, но я сталкиваюсь со следующим исключением:
Не удалось вызвать org.threeten.bp. ZoneId () без аргументов
В MongoDB объект называется meetingDateAndTime и находится в объекте с именем events, как показано ниже:
{
"_id": {
"$oid": "01234567890123456"
},
"events": {
"eventsSent": [
],
"eventsReceived": [
{
"eventId": "555555-4444-3333-2222-111111",
"meetingDateAndTime": {
"dateTime": {
"date": {
"day": {
"$numberInt": "13"
},
"month": {
"$numberInt": "4"
},
"year": {
"$numberInt": "2020"
}
},
"time": {
"hour": {
"$numberInt": "16"
},
"minute": {
"$numberInt": "45"
},
"nano": {
"$numberInt": "0"
},
"second": {
"$numberInt": "0"
}
}
},
"offset": {
"totalSeconds": {
"$numberInt": "7200"
}
},
"zone": {
"id": "Europe/Berlin"
}
}
}
}
Я определил следующие поля в android чтобы получить это:
Объект событий:
class Events {
@SerializedName("eventsSent")
var eventsSent: MutableList<Event>? = null
@SerializedName("eventsReceived")
var eventsReceived: MutableList<Event>? = null
}
Объект события:
class Event(
@SerializedName("eventId")
val eventId: String,
@SerializedName("meetingDateAndTime")
val meetingDateAndTime: ZonedDateTime
)
Мне удалось сохранить объект ZonedDateTime в MongoDB, но не проблема когда я пытаюсь получить тот же объект, я получаю исключение как состояние выше. Я думал, что мог бы просто получить фрагмент DateTimeObject по частям и перестроить ZonedDateTime в месте назначения, но я чувствую, что должен быть лучший подход к этому. Почему я получаю это сообщение об ошибке? Нужно ли создавать модифицированный конвертер для модернизации, чтобы обеспечить правильное преобразование объекта ZonedDateTime?