Не удалось вызвать org.threeten.bp.ZoneId () без аргументов, используя Retrofit 2 - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь получить объект из 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?

...