Сериализуйте логические значения "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.