Android JSONObject getString方法检查null / NULL?

时间:2016-09-11 09:37:37

标签: android json string null ioexception

此刻在我的代码中碰到一堵砖墙,用于从AsyncTask中的多个页面(使用循环)中获取json对象。它到达最后一页,但是获取正确的if语句以确保循环DOESN再次运行并继续运行令我感到困惑。

    String data = //some correct json data with next element that holds a uri parseable string
    JSONObject initial = new JSONObject(data);
    String next = initial.getString(nextObjSTR);
    //gonna start from the "last" page and recursively return to the 1st page
    if(*The if condition I need help with*) {
        //there is another page
        makeConnection(Uri.parse(next));
    }

基本上,json元素的最后一页有一个null或没有元素值的下一个元素,它会触发IOException方法中捕获的makeConnection错误,因为我的初始if语句一直都失败了。

如果从json检查字符串,我可以得到适当的理由或帮助吗?如果我使用String != null中的任何方法进行比较,我就会NullPointerExceptions尝试String。同样,JsonObject.NULL比较也不适用于我。

5 个答案:

答案 0 :(得分:2)

其他答案都没有奏效,我最后质疑该元素是否真的为空,尽管通过在线工具查看解析的json数据。最后,JSONObject.IsNull(元素映射名称)是正确的方法。

答案 1 :(得分:1)

如果您确定该值为null(空)或正确的URI,并假设nextObjSTR密钥始终存在于data JSON中,那么这样做:

if (next != null && !next.trim().isEmpty()) {
   makeConnection(Uri.parse(next));
}

或者,既然你已经在Android上了,那么最好使用更方便的方法:

if (!TextUtils.isEmpty(next)) {
   makeConnection(Uri.parse(next));
}

答案 2 :(得分:0)

您可以使用JSONObject的optString方法。如果JSON键不是,则此方法将返回一个空字符串,因此您可以轻松地检查它:

=divide_by_2_5(D1)

来源:https://developer.android.com/reference/org/json/JSONObject.html#optString(java.lang.String)

答案 3 :(得分:0)

你必须在json对象中检查带有键的值。 请尝试以下代码:

JSONObject initial = new JSONObject(data);
if(initial.has(nextObjSTR)) {
    String next = initial.getString(nextObjSTR);
    if (next != null && !next.isEmpty()) {
        makeConnection(Uri.parse(next));
    }               
}

答案 4 :(得分:0)

我喜欢这样...

String value; 
if(jsonObject.get("name").toString.equals("null")){
  value = "";
else{
   value = jsonObject.getString("name");
}