-
-
Notifications
You must be signed in to change notification settings - Fork 144
Closed
Description
Hi.
Using jackson-dataformat-protobuf:2.16.2, though we can serialize java.util.UUID
, we CAN'T deserialize.
import com.fasterxml.jackson.dataformat.protobuf.ProtobufMapper;
import java.io.IOException;
import java.util.Arrays;
import java.util.UUID;
public class JacksonProtobufUUID {
final static class Pojo {
public UUID id;
}
public static void main (String[] args) throws IOException {
var mapper = new ProtobufMapper();
var schema = mapper.generateSchemaFor(Pojo.class);
var pojo = new Pojo();
pojo.id = UUID.randomUUID();
System.out.println(pojo.id);
var serialized = mapper.writer(schema).writeValueAsBytes(pojo);
System.out.println(Arrays.toString(serialized));
var deserialized = mapper.reader(schema).readValue(serialized, Pojo.class);
System.out.println(deserialized.id);
}
}
This code results below:
993ea091-6eb4-429d-a8f0-540d4b18419e
[10, 16, -103, 62, -96, -111, 110, -76, 66, -99, -88, -16, 84, 13, 75, 24, 65, -98]
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Invalid byte 99 in Unicode text block
at [Source: (byte[])[18 bytes]; byte offset: #18] (through reference chain: JacksonProtobufUUID$Pojo["id"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:402)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:361)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1937)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:312)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2125)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1603)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1618)
at JacksonProtobufUUID.main(JacksonProtobufUUID.java:23)
Caused by: com.fasterxml.jackson.core.JsonParseException: Invalid byte 99 in Unicode text block
at [Source: (byte[])[18 bytes]; byte offset: #18]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2481)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:752)
at com.fasterxml.jackson.dataformat.protobuf.ProtobufParser._finishShortText(ProtobufParser.java:1944)
at com.fasterxml.jackson.dataformat.protobuf.ProtobufParser.getValueAsString(ProtobufParser.java:1390)
at com.fasterxml.jackson.databind.deser.std.FromStringDeserializer.deserialize(FromStringDeserializer.java:148)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310)
... 6 more
Is this expected behavior?