0

私は現在、Android アプリケーションにリンクされている php スクリプトを作成していますが、質問があります。私の php スクリプトには 2 つの出力があります。

  1. ["成功"]
  2. ヌル

出力がnullの場合、Androidアプリケーションで必要です:

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

出力が ["Success"] の場合、Android アプリに実行させたい:

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

        }

問題はまだ解決されていません

ASYNCTASKを介した私の完全なコードを更新してください:

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 が null かどうかを確認する適切な方法です。
于 2013-07-16T02:41:17.653 に答える
0

試してみてくださいif (json == null)。これは通常、Java で null オブジェクトをチェックする方法です。

編集: これは、Java のほとんどの「オブジェクト」が、実際にはデータ構造自体への単なる参照であるためです。== null参照が 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 に答える