gpt4 book ai didi

java - 为什么Joda-Time Duration序列化时出现 "iMillis"?

转载 作者:行者123 更新时间:2023-11-30 07:56:34 25 4
gpt4 key购买 nike

我想使用 Gson 将 Joda-Time Duration 实例序列化为代表秒数的 long。我的序列化器类是:

private class DurationSerializer implements JsonSerializer<Duration>
{
public JsonElement serialize(Duration duration,
Type durationType,
JsonSerializationContext context)
{
return new JsonPrimitive(duration.getStandardSeconds());
}
}

其输出为{"iMillis":900000}。我只想要秒数,而不是 iMillis 标签。这可能吗?

最佳答案

我不建议使用 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();

关于java - 为什么Joda-Time Duration序列化时出现 "iMillis"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32594689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com