GeezerVison is showing github.com — timestamp (de)serialization not work on msgpack-jackson 0.9.3 · Issue #674 · msgpack/msgpack-java
timestamp (de)serialization not work on msgpack-jackson 0.9.3 #674
Description
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);
Activity
komamitsu commented on Sep 9, 2022
Yes. I don't think Jackson can handle private classes.
public class Pojo {
public int i = 42;
public Instant now = Instant.now();
}
:
ObjectMapper mapper = new ObjectMapper(new MessagePackFactory());
Pojo x = new Pojo();
byte[] bytes = mapper.writeValueAsBytes(x);
System.out.println(mapper.readValue(bytes, new TypeReference<Map<String, Object>>() {}));
>>>> {i=42, now={epochSecond=1662712326, nano=653000000}}changwoo commented on Sep 11, 2022
Yes. I don't think Jackson can handle private classes.
public class Pojo {
public int i = 42;
public Instant now = Instant.now();
}
:
ObjectMapper mapper = new ObjectMapper(new MessagePackFactory());
Pojo x = new Pojo();
byte[] bytes = mapper.writeValueAsBytes(x);
System.out.println(mapper.readValue(bytes, new TypeReference<Map<String, Object>>() {}));
>>>> {i=42, now={epochSecond=1662712326, nano=653000000}}
Jackson CAN handle private classes.
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.
komamitsu commented on 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.LocalDateTime or other classes. Let me think about it...
komamitsu commented on Sep 14, 2022
We decided to simply support only Instant. With the feature introduced by #677, Instant instances will be serialized and deserialized automatically.
Metadata
Metadata
Development
No branches or pull requestsIssue actions