Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java无法识别jSonObject中的空值_Java_Android_Null - Fatal编程技术网

Java无法识别jSonObject中的空值

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

我有一个带有键值对的jSonObject,我想将它解析为ContentValue。在解析过程中,我想检测值是否为null,如图中所示,值为null,但它仍然没有被if语句捕获。因为它是一个json,可能会将null作为字符串,所以我尝试使用value.equals(“null”),但都不起作用

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在默认情况下不在