Skip to content

MessagePack cannot serialize a BigDecimal that can't be represented as double. 0.00001 #534

Description

@hudingchen

java version: Java 11
jackson-dataformat-msgpack version: 0.8.20

sample:

ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
OrderEntity orderEntiy = new OrderEntity();
orderEntity.setAmount(new BigDecimal("0.00001"));
byte[] bytes = objectMapper.writeValueAsBytes(orderEntity);
public class OrderEntity {
    private BigDecimal amount;

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
}

error:

MessagePack cannot serialize a BigDecimal that can't be represented as double. 0.00001
java.lang.IllegalArgumentException: MessagePack cannot serialize a BigDecimal that can't be represented as double. 0.00001
	at org.msgpack.jackson.dataformat.MessagePackGenerator.packBigDecimal(MessagePackGenerator.java:274)
	at org.msgpack.jackson.dataformat.MessagePackGenerator.pack(MessagePackGenerator.java:233)
	at org.msgpack.jackson.dataformat.MessagePackGenerator.packObject(MessagePackGenerator.java:291)
	at org.msgpack.jackson.dataformat.MessagePackGenerator.flush(MessagePackGenerator.java:520)
	at org.msgpack.jackson.dataformat.MessagePackGenerator.close(MessagePackGenerator.java:504)
	at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4414)
	at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3687)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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