【问题标题】:Android JsonElement in if condition to check equalt toAndroid JsonElement 在 if 条件下检查等于
【发布时间】:2017-02-27 20:22:40
【问题描述】:

我对@9​​87654321@ 有一个问题,无法在我的项目中检查一个 if 条件。我该如何解决?

我的字符串常量

public static final Integer RESULT_CODE_OK = 200;
public static final String RESULT_SUCCESS_OK = "true";
public static final String TAG_STATUS = "status";
public static final String TAG_SUCCESS = "success";

这是我的常量文件。

我的 json 元素

JsonElement apiStatus=response.body().get(Constants.TAG_STATUS); 
JsonElement apiSuccess=response.body().get(Constants.TAG_SUCCESS);

我想检查下面的条件来完成一些任务

 if ((apiStatus.equals(Constants.RESULT_CODE_OK)) &&
                        (apiSuccess.equals(Constants.RESULT_SUCCESS_OK)) ) { //data received successfully
    // some task 
}else{ //while retrieving data something went wrong.
// do some task for the else.
}

如果这样做,它总是会进入 else 循环。

我已经在 logcat 上打印了以上两个变量。对于 if 循环,该值绝对没问题。我哪里做错了?

【问题讨论】:

  • 显然这是因为您将JsonElementString 进行比较...
  • @Selvin 我如何比较这个?
  • 显然通过将JsonElement 转换为String ...我很确定您会在JsonElement's 文档中找到合适的方法/答案
  • @Selvin 请看下面我尝试过的答案,但得到了确切的答案。

标签: java android json if-statement


【解决方案1】:

apiStatus.equals(Constants.RESULT_CODE_OK) 为 false,因为 apiStatus 的类型为 JsonElement,而 Constants.RESULT_CODE_OKString。 你可以使用

if ((apiStatus.getAsInt().equals(Constants.RESULT_CODE_OK)) &&
                        (apiSuccess.getAsString.equals(Constants.RESULT_SUCCESS_OK)) ) {....}

【讨论】:

  • 我如何比较这个?
  • 可以在JsonElement上调用.toString()获取String进行比较
  • if ((apiStatus.toString().equals(Constants.RESULT_CODE_OK)) && (apiSuccess.toString().equals(Constants.RESULT_SUCCESS_OK)) ) 我已经这样做了,但条件不起作用
  • RESULT_CODE_OK 是整数,因此您需要调用 apiSuccess.getAsInt()。使用 getAsString() 和 getAsInt() 调用更新答案
  • 谢谢,现在可以正常工作了if ((apiStatus.getAsInt()== Constants.RESULT_CODE_OK) && (apiSuccess.getAsString().equals(Constants.RESULT_SUCCESS_OK)) ) {..}这是最终代码
猜你喜欢
  • 2023-01-02
  • 2016-09-24
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多