Skip to content

Jackson can't serialize Integer (or basic types) #230

Description

@fdinoff

The following fails with an IllegalStateException

ObjectMapper msgPackObjectMapper = new ObjectMapper(new MessagePackFactory());
byte[] msgPack = msgPackObjectMapper.writeValueAsBytes(1); // Throws
com.fasterxml.jackson.databind.JsonMappingException: The stack is empty
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:139)
    at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:2881)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:2362)
        ...
Caused by: java.lang.IllegalStateException: The stack is empty
    at org.msgpack.jackson.dataformat.MessagePackGenerator.getStackTop(MessagePackGenerator.java:371)
    at org.msgpack.jackson.dataformat.MessagePackGenerator.addValueToStackTop(MessagePackGenerator.java:397)
    at org.msgpack.jackson.dataformat.MessagePackGenerator.writeNumber(MessagePackGenerator.java:284)
    at com.fasterxml.jackson.databind.ser.std.NumberSerializers$IntegerSerializer.serialize(NumberSerializers.java:138)
    at com.fasterxml.jackson.databind.ser.std.NumberSerializers$IntegerSerializer.serialize(NumberSerializers.java:131)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:128)
       ...

I would expect the array returned to contain 0x01, which is what out would contain if done manually.

ByteArrayOutputStream out = new ByteArrayOutputStream();
MessagePack.newDefaultPacker(out).packInt(1).close();

This appears to also fail for the other basic types such as booleans, BigInteger, and Strings.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions