0

我目前编写了一个链接到我的 android 应用程序的 php 脚本,但是我有一个问题:我的 php 脚本有 2 个输出:

  1. [“成功”]
  2. 无效的

当输出为空时,我想在我的 android 应用程序中:

if (json.equals(null)) {
    goodrating.setVisibility(View.GONE);
    badrating.setVisibility(View.GONE);

如果输出为 ["Success"] 我希望我的 android 应用程序执行以下操作:

    } else {
 goodrating.setVisibility(View.VISIBLE);
 badrating.setVisibility(View.VISIBLE);

        }

问题尚未解决

通过异步任务更新我的完整代码:

protected String doInBackground(String... params) {
if (fb.isSessionValid()) {
                    String resulta;
                    JSONObject obj = null;
                    String jsonUser = fb.request("me");
                    obj = Util.parseJson(jsonUser);
                    String email = obj.optString("email");

                    String phonename = prefs.getString("esmlphone", "value");
                    InputStream isr = null;
                    HttpClient httpclient = new DefaultHttpClient();
                    String tablename = prefs.getString("hazahuwakeylurl",
                            "walashi");
                    HttpPost httpost = new HttpPost(
                            "secret");
                    HttpResponse resposne = httpclient.execute(httpost);
                    HttpEntity entity = resposne.getEntity();
                    isr = entity.getContent();
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(isr, "UTF-8"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    isr.close();
                    resulta = sb.toString();
                    final JSONArray jArray = new JSONArray(resulta);
                    try {
                        for (int i = 0; i < jArray.length(); i++) {
                            JSONObject json = jArray.getJSONObject(0);
                            if (json.isNull("response")) {
                                goodrating.setVisibility(View.GONE);
                                badrating.setVisibility(View.GONE);
                            } else {
                                goodrating.setVisibility(View.VISIBLE);
                                badrating.setVisibility(View.VISIBLE);
                            }
                        }

                    } catch (Exception e) {
                        Log.d("visibility", e.toString());
                    }
                }

            return null;

        }
4

4 回答 4

1

问题

  1. “null” 不是有效的 JSON,但是,[null] 是。检查http://jsonlint.com/
  2. 根据您的例外,您正在将字符串转换为 JSON 对象。所以我猜 jArray 只是你的响应数组。您应该首先将您的响应转换为 JSON 数组或对象。
  3. 一旦你解决了#2,http://developer.android.com/reference/org/json/JSONArray.html#isNull(int)是检查 JSONArray 中的 JSONObject 是否为空的正确方法。
于 2013-07-16T02:41:17.653 回答
0

那么当你访问网站时,它是只输出 ["Success"] 还是 null 呢?如果是这种情况,那么它不是您输出的 json。你想要输出的是这样的:

{
    "response": "Success"
}

或者

{
    "response": null
}

只有这样,Android端的JSON才能正常工作

于 2013-07-16T22:25:15.473 回答
0

试试if (json == null)。这通常是您在 Java 中检查空对象的方式。

编辑:这是因为 Java 中的大多数“对象”实际上只是对数据结构本身的引用。您使用== null检查引用是否为空,并使用.equals()来确定一个对象是否在逻辑上等同于另一个对象。

再试一次 - 看起来JsonObject 类JsonValue.NULL中有一个常量。尝试if (json == JsonValue.NULL)

于 2013-07-15T23:08:03.120 回答
0

所以你想要做的是:

if(json.isNull("response"))
    goodrating.setVisibility(View.GONE);
    badrating.setVisibility(View.GONE);
} else if(json.getString("response").equals("Success")){
    goodrating.setVisibility(View.VISIBLE);
    badrating.setVisibility(View.VISIBLE);
}
于 2013-07-15T23:11:24.387 回答