Я получаю недопустимое значение поля Byte
при десериализации.
Json:
{"byteField" : 128 }
Java:
class Dto {
private Byte byteField;
... getter/setter
}
После десериализация Я получаю Dto.byteField
= -128
Я нашел следующий код в библиотеке Jackon-core v.2.11.0 в com.fasterxml.jackson.core.JsonParser#getByteValue
public byte getByteValue() throws IOException {
int value = getIntValue();
// So far so good: but does it fit?
// [JACKSON-804]: Let's actually allow range of [-128, 255], as those are uniquely mapped
// (instead of just signed range of [-128, 127])
if (value < MIN_BYTE_I || value > MAX_BYTE_I) {
throw new InputCoercionException(this,
String.format("Numeric value (%s) out of range of Java byte", getText()),
JsonToken.VALUE_NUMBER_INT, Byte.TYPE);
}
return (byte) value;
}
, но не смог найти проблему JACKSON-804, а также любое обсуждение диапазона байтов.
Вопрос:
- Почему Джексон позволяет байтам быть больше 127?