我找不到Boolean
类中的任何方法来将布尔值序列化为“1”和“0”而不是“true”和“假”。Serialize布尔值为“1”和“0”而不是“true”和“false”
是否有任何本机功能来做到这一点?如果不是,最好的方法是什么(最优化的方式)?
更新:我的意思是从Boolean
中产生String
。
我找不到Boolean
类中的任何方法来将布尔值序列化为“1”和“0”而不是“true”和“假”。Serialize布尔值为“1”和“0”而不是“true”和“false”
是否有任何本机功能来做到这一点?如果不是,最好的方法是什么(最优化的方式)?
更新:我的意思是从Boolean
中产生String
。
如果你在谈论生产从给定Boolean
一个String
,则没有,没有产生“0”或“1”没有内置的方法,但是你可以很容易地把它写:
public static String toNumeralString(final Boolean input) {
if (input == null) {
return "null";
} else {
return input.booleanValue() ? "1" : "0";
}
}
根据您的使用情况,如果input
为空,让它抛出NullPointerException
可能更合适。如果您遇到这种情况,那么您可以将方法仅限于第二行return
。
看起来你错过了你的方法中的数据类型 – 2011-06-14 08:17:39
@ Eng.Fouad:的确,我确实感谢你的提醒。现在修复。 – 2011-06-14 08:18:11
我不确定,但只是扔掉它。你可以使用你自己的装饰类。
什么?笏? INI? Wataguan? – 2011-06-14 08:25:47
装饰设计模式可让您以不同的方式自定义您的输出。你可以将'boolean'装饰成'0'和'1'值。 – 2011-06-14 08:41:55
您是否看到OP要求提供“最优化”解决方案?你认为装饰者有资格吗? – 2011-06-14 09:26:20
您可以使用CompareTo:
public static Integer booleanToInteger(Boolean bool)
{
if(bool == null) return null;
else return bool.compareTo(Boolean.FALSE);
}
我不会鼓励这一点,因为它很模糊而且不明显。并且*如果*你这样做,我会使用'Boolean.FALSE'作为参数,以便跳过自动装箱。 – 2011-06-14 08:43:04
@Joachim Sauer:谢谢,我解决了。 – 2011-06-14 08:46:23
...而且模糊/混淆代码不太可能被JIT编译器优化。 – 2011-06-14 09:28:17
如果你想序列化到一个字符,你可以做
public static char toChar(final Boolean b) {
return b == null ? '?' : b ? '1' : '0';
}
使用节俭API:
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object);
将布尔0或1而不是真/假。
你是认真的吗?安装一个完整的库,在工厂中使用2个对象,所有只是将一个字符串转换为布尔值... – 2014-06-20 08:10:15
什么方法*序列化*布尔'为“真”和“假”?或者你只是在谈论从'Boolean'生成'String'? – 2011-06-14 08:12:33
你为什么想这样做? – 2011-06-14 08:12:53
让'b'成为一个布尔值:'int i = b? 1:0;'。 – Kevin 2011-06-14 08:13:00