Java 将布尔值序列化为";1“;及;0“;而不是",;“真的”;及;假;

Java 将布尔值序列化为";1“;及;0“;而不是",;“真的”;及;假;,java,serialization,boolean,Java,Serialization,Boolean,我在Boolean类中找不到任何方法将布尔值序列化为“1”和“0”,而不是“true”和“false” 是否有任何本机函数可以执行此操作?如果不是,最好的方式(最优化的方式)是什么 更新:我的意思确实是从一个布尔值生成一个字符串,如果你说的是从一个给定的布尔值生成一个字符串,那么不,没有生成“0”或“1”的内置方法,但是你可以很容易地编写它: public static String toNumeralString(final Boolean input) { if (input == nu

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

是否有任何本机函数可以执行此操作?如果不是,最好的方式(最优化的方式)是什么

更新:我的意思确实是从一个
布尔值生成一个
字符串
,如果你说的是从一个给定的
布尔值生成一个
字符串
,那么不,没有生成“0”或“1”的内置方法,但是你可以很容易地编写它:

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

根据您的用例,如果
input
为null,则让它抛出
NullPointerException
可能更合适。如果您是这样的话,那么您可以将该方法减少到第二个
返回
行。

我不确定,只是把它扔掉了。您可以使用自己的装饰器类。

您可以使用:


如果要序列化为字符,可以执行以下操作

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

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

它将布尔值设置为0或1,而不是真/假。

什么方法将布尔值序列化为“真”和“假”?或者你只是说从一个
布尔值生成一个
字符串
?让
b
成为一个布尔值:
inti=b?1 : 0;
@Matthieu,你有10多个问题没有回答。;)@凯文:小心!他说的是
Boolean
,在这种情况下
b
可能是
null
@凯文:你是说
inti==b?1 : 0;?您似乎错过了数据库中的数据类型method@Eng.Fouad当前位置确实是这样,谢谢你的提醒。现已修复。装饰设计模式允许您以不同的方式自定义输出。您可以将
boolean
修饰为
0
1
值。您看到OP要求“最佳”解决方案的地方了吗?你认为装饰师有资格吗?我不鼓励这样做,因为这是相当模糊和不明显的。如果你这样做,我会使用
Boolean.FALSE
作为参数,以跳过自动装箱。。。。模糊/模糊代码不太可能被JIT编译器优化。你是认真的吗?安装一个完整的库,使用带有工厂的2个对象,所有这些都只是为了将字符串转换为布尔值…
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object);