Сериализуйте логические значения "1" и "0" вместо "истинных" и "ложных",
Я не могу найти какой-либо метод в классе Boolean
для сериализации логических значений "1" и "0" вместо "истинных" и "ложных".
Есть ли какая-нибудь нативная функция? Если нет, каков наилучший способ (наиболее оптимизированный способ)?
Обновление: я действительно хочу создать String
из Boolean
.
Ответы
Ответ 1
Если вы говорите о создании String
из заданного Boolean
, то нет, нет встроенного метода, который производит "0" или "1", но вы можете легко записать его:
public static String toNumeralString(final Boolean input) {
if (input == null) {
return "null";
} else {
return input.booleanValue() ? "1" : "0";
}
}
В зависимости от вашего варианта использования может быть более уместно позволить ему выбрасывать NullPointerException
, если input
имеет значение null. Если это произойдет для вас, вы можете уменьшить метод до второй линии return
.
Ответ 2
Вы можете использовать CompareTo:
public static Integer booleanToInteger(Boolean bool)
{
if(bool == null) return null;
else return bool.compareTo(Boolean.FALSE);
}
Ответ 3
Если вы хотите сериализоваться на char, вы можете сделать
public static char toChar(final Boolean b) {
return b == null ? '?' : b ? '1' : '0';
}
Ответ 4
Я не уверен, но просто выброшу его. вы можете использовать свой собственный класс Decorator.
Ответ 5
Использовать API Thrift:
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object);
Он будет иметь значение boolean для 0 или 1 вместо true/false.