Java无法识别jSonObject中的空值
我有一个带有键值对的jSonObject,我想将它解析为ContentValue。在解析过程中,我想检测值是否为null,如图中所示,值为null,但它仍然没有被if语句捕获。因为它是一个json,可能会将null作为字符串,所以我尝试使用value.equals(“null”),但都不起作用Java无法识别jSonObject中的空值,java,android,null,Java,Android,Null,我有一个带有键值对的jSonObject,我想将它解析为ContentValue。在解析过程中,我想检测值是否为null,如图中所示,值为null,但它仍然没有被if语句捕获。因为它是一个json,可能会将null作为字符串,所以我尝试使用value.equals(“null”),但都不起作用 if ( value == null | value. equals("null") || tableField.getType() == FIELD_TYPE_NULL ) { DO SOME
if ( value == null | value. equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
怎么了?你的第一个“或”只是单管“|”而不是双管“||”
if ( value == null || value.equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
您的第一个“或”只是单管“|”,而不是双管“||”
if ( value == null || value.equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
您在第一个条件中缺少一个
您在第一个条件中缺少一个
试试看
if ( value == null || value.equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
试试看
尝试使用value.isNullObject()函数。如果对象为NULL,则返回true。尝试使用value.isNullObject()函数。如果对象为NULL,则返回true
if ( value == null | value. equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
虽然在您的情况下,如果上面的值为“null”,那么结果将是
value == null | value. equals("null")// first condition in if statement --->if(false|true)---> if(true)
您使用的是位或非逻辑或
应该是
if ( value == null || value. equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
虽然在您的情况下,如果上面的值为“null”,那么结果将是
value == null | value. equals("null")// first condition in if statement --->if(false|true)---> if(true)
您使用的是位或非逻辑或
应该是
if ( value == null || value. equals("null") || tableField.getType() == FIELD_TYPE_NULL ) {
DO SOME CODE
}
从jsonobject检索值的常用方法是使用getString()方法。因此必须使用value=jsonObject.getString(columnName)为值变量指定值。然后,您需要根据需要检查条件
if ( value == null || value. equals("null") || tableField.getType() == FIELD_TYPE_NULL )
{
}
从jsonobject检索值的常用方法是使用getString()方法。因此必须使用value=jsonObject.getString(columnName)为值变量指定值。然后,您需要根据需要检查条件
if ( value == null || value. equals("null") || tableField.getType() == FIELD_TYPE_NULL )
{
}
是的,java中的
或
运算符可以是单管或双管,如果是单管,并且第一条语句为true,则不会继续检查下一条语句。这样我就避免了空指针异常。@Xabier抱歉,这很接近,但不正确。|是按位OR运算符,而不是逻辑OR运算符。@Xabier请参阅以供参考。Sun Java文档说明,如果两个操作数都是布尔或布尔的,则按位运算符的结果也是布尔的。这意味着单个管道按位OR转换为布尔OR:。。。它仍然没有像OP计划的那样有意义。使用位OR应该和布尔OR一样有效地避免NPE。布尔表达式从左到右求值。当你有一个由两部分组成的OR表达式(A或B)时,如果A已经为真,Java会将整个表达式计算为真。@netinept我试过了,但结果相同。它不会停止。不知何故,它将对象null解析为字符串,在if
中,我将contentValues.put(columnName,((value==null)?“”:string.valueOf(value))
并将contentValue填充为字符串“null”;是的,java中的或
运算符可以是单管或双管,如果是单管,并且第一条语句为true,则不会继续检查下一条语句。这样我就避免了空指针异常。@Xabier抱歉,这很接近,但不正确。|是按位OR运算符,而不是逻辑OR运算符。@Xabier请参阅以供参考。Sun Java文档说明,如果两个操作数都是布尔或布尔的,则按位运算符的结果也是布尔的。这意味着单个管道按位OR转换为布尔OR:。。。它仍然没有像OP计划的那样有意义。使用位OR应该和布尔OR一样有效地避免NPE。布尔表达式从左到右求值。当你有一个由两部分组成的OR表达式(A或B)时,如果A已经为真,Java会将整个表达式计算为真。@netinept我试过了,但结果相同。它不会停止。不知何故,它将对象null解析为字符串,在if
中,我将contentValues.put(columnName,((value==null)?“”:string.valueOf(value))
并将contentValue填充为字符串“null”;是的,java中的或
运算符可以是单管或双管,如果是单管,并且第一条语句为true,则不会继续检查下一条语句。这样我就避免了空指针异常。是的,java中的或运算符可以是单管或双管,如果是单管,并且第一条语句为true,则不会继续检查下一条语句。这样可以避免nullpointer异常。value.isNullObject不存在!?value.isNullObject不存在<代码>值==null |值。等于(“null”)
如果值为null
非空字符串将不会值。等于(“null”)
抛出NPE?我认为应该写为“null”。等于(value)
您是否在控制台中打印了value的值?Try System.out.println(“值:“+Value+”:”);给我看确切的输出是的。System.out.println(“值为”+value)打印值为null
。当它应该打印值时,这就是我尝试值的原因。equals(“null”)
尝试打印我上面提到的精确行,并告诉我当这些条件中的任何一个为真值==null |值时的输出。等于(“空”)。但它不正确?value==null | value。等于(“null”)
如果值为null
非空字符串将不会值。等于(“null”)
抛出NPE?我认为应该写为“null”。等于(value)
您是否在控制台中打印了value的值?Try System.out.println(“值:“+Value+”:”);给我看确切的输出是的。System.out.println(“值为”+value)打印值为null
。当它应该打印值时,这就是我尝试值的原因。equals(“null”)
尝试打印我上面提到的精确行,并告诉我当这些条件中的任何一个为真值==null |值时的输出。等于(“空”)。但是这不对吗?StringUtils在android studio中不是默认的。我宁愿避免添加额外的类。至少用于检查值是否为空。不过还是要谢谢你。StringUtils在默认情况下不在