Closed changwoo closed 2 years ago
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}}
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.
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...
We decided to simply support only Instant. With the feature introduced by https://github.com/msgpack/msgpack-java/pull/677, Instant instances will be serialized and deserialized automatically.
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.