我通过写入毫秒为Type Instant创建了一个TypeAdapter。如何处理instant-field为null的情况。我不想写一种特殊的条目,比如-1L,我以后可以在阅读过程中转换为null(见下面的例子)。我想跳过生成的json-text中的条目,因为这是默认情况。
示例:
gsonBuilder.registerTypeAdapter(Instant.class, new TypeAdapter<Instant>(){
@Override
public void write(final JsonWriter jsonWriter, final Instant instant) throws IOException {
if (instant != null) {
jsonWriter.value(instant.toEpochMilli());
} else {
jsonWriter.value(-1L);
}
}
@Override
public Instant read(final JsonReader jsonReader) throws IOException {
long millisEpoch = jsonReader.nextLong();
if (millisEpoch == -1) {
return null;
} else {
return Instant.ofEpochMilli(millisEpoch);
}
}
});
1条答案
按热度按时间0ejtzxu11#
这很简单,我认为您可以修改您的
TypeAdapter
来检查即时值是否为null,而不是将其写入JSON
输出让我用一个简单的例子解释一下,首先,在
write
方法中,我检查Instant
值是否为null,并写入一个null值而不是epoch毫秒,这将跳过JSON输出中的null值,在read
方法中,我仍然检查-1L
的特殊情况,以将其转换为null祝你好运!