我在Boolean
类上找不到任何方法将布尔值序列化为“1”和“0”而不是“true”和“false”。
有没有本地功能呢?如果没有,最好的方式是什么(最优化的方式)?
更新:我的确意味着从String
生成Boolean
。
答案 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。