【问题标题】:How to serialize a json firestore Timestamp to Date?如何将json firestore时间戳序列化为日期?
【发布时间】:2020-06-07 11:58:15
【问题描述】:

我在 Firestore 中存储了一个日期。我从 firestore 获得了一个 HashMap<String, Object>,我想从中重新创建我的对象。

在实现 Date 之前,工作代码是:

HashMap<String, Object> document = new HashMap<String, Object>();
document.put("name", "name");
JSONElement jsonElement = gson.toJsonTree(document);
Event event = gson.fromJson(jsonElement , Event.class);

我现在已经添加了字段

@ServerTimestamp
private Date dateOfEvent;

但是当我尝试序列化它时,我收到以下错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期为 STRING,但在路径 $.dateOfEvent 处为 BEGIN_OBJECT

因为 JsonElement “dateOfEvent” 看起来像这样,因为它是 Firestore 时间戳:

{"dateOfEvent": {"nanoseconds":0,"seconds":1584921600}, "name": "test Event"}

感谢您的宝贵时间和帮助。

【问题讨论】:

标签: android serialization google-cloud-firestore timestamp gson


【解决方案1】:

Gson 期待像 2020-02-27T09:00:00 这样的日期字符串,但它实际上是一个对象。你可以像这样设置你的类并添加一个辅助方法来获取dateOfEvent 作为Date

class Event {
  private String name;
  private MyDate date;
}

class MyDate {
  private Long nanoseconds;
  private Long seconds;

  // getters/setters for nanoseconds, seconds...

  public Date asDate() {
    // convert to date
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多