我希望将Joda-Time Duration
实例序列化为一个长度,表示使用Gson
的秒数。我的序列化程序类是:
private class DurationSerializer implements JsonSerializer<Duration>
{
public JsonElement serialize(Duration duration,
Type durationType,
JsonSerializationContext context)
{
return new JsonPrimitive(duration.getStandardSeconds());
}
}
此输出为{"iMillis":900000}
。我只想要秒数,而不是iMillis标签。这可能吗?
答案 0 :(得分:1)
我不建议使用JsonDeserializer
因为它已被弃用而不支持Streaming API。我不确定你的问题是什么,但我认为它不在Serializer
。
请尝试使用TypeAdapter
:
public class DurationTypeAdapter extends TypeAdapter<Duration> {
public void write(JsonWriter writer, Duration value) throws IOException {
if (value == null) {
writer.nullValue();
return;
}
writer.value(duration.getStandardSeconds());
}
// implementation of read() is left as an exercise to you
}
像这样注册:
GsonBuidler builder = new GsonBuilder();
builder.registerTypeAdapter(new DurationTypeAdapter());
Gson g = builder.create();