检查JSON输出

时间:2013-07-15 23:04:46

标签: php android json

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

  1. [ “成功”]
  2. 当输出为null时我想在我的android应用程序中:

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

    如果输出是[“成功”]我希望我的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 个答案:

答案 0 :(得分: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是否为空的正确方法。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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);
}

答案 3 :(得分:0)

所以,当你点击网站时,它是仅输出[“成功”]还是空? 如果是这样的话,那就不是你输出的json。你想输出的是这样的:

{
    "response": "Success"
}

{
    "response": null
}

只有这样,Android端的JSON才能正常运行