Skip to content

Cannot deserialize UUID values #506

@uniquonil

Description

@uniquonil

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions