作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 gson 将序列化消息转换为对象,但我在将一个属性转换为 java.sql.Timestamp
时遇到问题
JSON 中的开始时间属性是
{...other_fields, "start_time": "2020-05-27 05:23:43.022610"}
new GsonBuilder().serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss.S").create();
2020-05-27 05:24:05.61
Java Version:
1.8
Gson version:2.8.2
After change format to
yyyy-MM-dd HH:mm:ss
(omitting milliseconds) I got the right result, but without milliseconds value. I can live with that, but it would be nice if someone could still explain this issue.
最佳答案
GsonBuilder.setDateFormat()
用途 SimpleDateFormat
.
和 SimpleDateFormat
解析过程中不支持微秒。 S
表示毫秒,表示小数点后只有 3 位。
这是可以证明的。在您的 JSON 中删除微秒并使用 2020-05-27 05:23:43.022
作为输入。
输出将是
2020-05-27 05:23:43.022
Timestamp
确实支持微秒,如果你想转换
2020-05-27 05:23:43.022610
(以微秒为单位)到
Timestamp
,你最好写一个
custom GSON deserializer
class TimestampDeserializer implements JsonDeserializer<Timestamp> {
@Override
public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// Handle null checks or format check, etc.
return Timestamp.valueOf(json.getAsString());
}
}
Gson gson = new GsonBuilder().serializeNulls().registerTypeAdapter(Timestamp.class, new TimestampDeserializer()).create();
关于java - Gson 搞砸了分钟值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62036561/
我是一名优秀的程序员,十分优秀!