You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
timestamp (de)serialization not work on msgpack-jackson 0.9.3 #674
I saw the news of timestamp extension support on version 0.9.0 and tried it. But I still can't (de)serialize timestamps with the 0.9.3 version. Is it supported also when using Jackson?
I did like this and the "Instant" was serialized as a map of string keys "epochSecond"/"nano" and uint32 values.
private static class A {
@JsonProperty(index = 0)
Instant instant = Instant.now();
}
....
A a = new A();
ObjectMapper objectMapper = new MessagePackMapper();
byte[] bytes = objectMapper.writeValueAsBytes(a);
I mean, the timestamps were not serialized in the extension format.
Your example Pojo class was serialized like this:
// 82 a1 69 2a a3 6e 6f 77 82 ab 65 70 6f 63 68 53 65 63 6f 6e 64 ce 63 1d 90 50 a4 6e 61 6e 6f ce 05 8b 11 40
// i 42 n o w e p o c h S e c o n d n a n o
This is not the timestamp extension format. It's just a map with string keys and uint32 values.
Activity
komamitsu commentedon Sep 9, 2022
Yes. I don't think Jackson can handle private classes.
changwoo commentedon Sep 11, 2022
Jackson CAN handle private classes.
I mean, the timestamps were not serialized in the extension format.
Your example Pojo class was serialized like this:
This is not the timestamp extension format. It's just a map with string keys and uint32 values.
komamitsu commentedon Sep 11, 2022
Oops. Sorry, I misread your comment the other way around.
Supporting only Instant shouldn't be difficult. But someone may want to use
java.time.LocalDateTimeor other classes. Let me think about it...komamitsu commentedon Sep 14, 2022
We decided to simply support only Instant. With the feature introduced by #677, Instant instances will be serialized and deserialized automatically.