【问题标题】:How to send Date object through Moshi JSON serializer?如何通过 Moshi JSON 序列化器发送 Date 对象?
【发布时间】:2017-05-06 23:47:05
【问题描述】:

我必须通过 API 将 Date 对象发送到服务器(实际上,Date 是服务器期望的对象)。我想使用 Moshi,但我不知道如何使用自定义适配器来实现它。有人吗?

【问题讨论】:

  • Date 不是 JSON 中指定的内容。所以你的服务器不能期待一个 Date 对象。它期望日期的某种表示形式,无论是具有某种格式的字符串、时间戳还是复杂结构。您需要首先确定您应该发送什么格式。
  • 我应该发送 JSON
  • DateJSON 的上下文中没有任何意义。所以这没有意义。你必须弄清楚你的服务器期望什么格式。

标签: android moshi


【解决方案1】:

添加对 moshi-adapters 包的依赖:

<dependency>
  <groupId>com.squareup.moshi</groupId>
  <artifactId>moshi-adapters</artifactId>
  <version>1.4.0</version>
</dependency>

然后在您的Moshi 实例中安装Rfc3339DateJsonAdapter

Moshi moshi = new Moshi.Builder()
    .add(Date.class, new Rfc3339DateJsonAdapter())
    .build();

它将以 RFC 3339 格式的 JSON 字符串形式提供日期,如下所示:"2017-05-06T20:00:00-05:00"

【讨论】:

  • 知道如何添加这个 moshi 实例进行改造吗?
  • 如果日期不是 Rfc3339 格式怎么办?如果它看起来像 2018-05-12T13:19:00Z (ISO8601?) 会怎样
  • RFC3339 也支持以 Z 结尾的日期。它被记录为 ISO8601 的配置文件。
  • @PrashanD 将 moshi 添加到改造(kotlin):Retrofit.Builder().addConverterFactory(MoshiConverterFactory.create(Moshi.Builder().add(Date::class.java, Rfc3339DateJsonAdapter()).add(KotlinJsonAdapterFactory()).build())) gradle 依赖项:implementation 'com.squareup.retrofit2:converter-moshi:2.4.0' implementation 'com.squareup.moshi:moshi-adapters:1.10.0' implementation 'com.squareup.moshi:moshi-kotlin:1.9.1'
猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多