序列化布尔值为“1”和“0”而不是“true”和“false”

时间:2011-06-14 08:10:53

标签: java serialization boolean

我在Boolean类上找不到任何方法将布尔值序列化为“1”和“0”而不是“true”和“false”。

有没有本地功能呢?如果没有,最好的方式是什么(最优化的方式)?

更新:我的确意味着从String生成Boolean

5 个答案:

答案 0 :(得分:11)

如果你在谈论从给定String生成Boolean,那么不,没有内置方法产生“0”或“1” “,但你可以轻松地写出来:

public static String toNumeralString(final Boolean input) {
  if (input == null) {
    return "null";
  } else {
    return input.booleanValue() ? "1" : "0";
  }
}

根据您的使用情况,如果NullPointerException为空,则允许它抛出input可能更合适。如果是这种情况,那么您可以将方法单独减少到第二个return行。

答案 1 :(得分:3)

您可以使用CompareTo

public static Integer booleanToInteger(Boolean bool)
{
    if(bool == null) return null;
    else return bool.compareTo(Boolean.FALSE);
}

答案 2 :(得分:1)

如果你想序列化为char,你可以做

public static char toChar(final Boolean b) {
    return b == null ? '?' : b ? '1' : '0';
}

答案 3 :(得分:-1)

我不确定,只是把它丢掉了。你可以使用自己的Decorator类。

答案 4 :(得分:-2)

使用Thrift API:

TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object);

它将布尔值设置为0或1而不是true / false。