Php 检查JSON输出

Php 检查JSON输出,php,android,json,Php,Android,Json,我目前编写了一个链接到android应用程序的php脚本,但我有一个问题: 我的php脚本有两个输出: if (json.equals(null)) { goodrating.setVisibility(View.GONE); badrating.setVisibility(View.GONE); [“成功”] 空的 当输出为空时,我希望在我的android应用程序中: if (json.equals(null)) { goodrating.setVisibility(

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

if (json.equals(null)) {
    goodrating.setVisibility(View.GONE);
    badrating.setVisibility(View.GONE);
  • [“成功”]
  • 空的
  • 当输出为空时,我希望在我的android应用程序中:

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
    如果输出为[“成功”],我希望我的android应用程序执行以下操作:

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
        } else {
     goodrating.setVisibility(View.VISIBLE);
     badrating.setVisibility(View.VISIBLE);
    
            }
    
    问题尚未解决

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
    通过ASYNCTASK更新我的完整代码:

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
    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;
    
            }
    
    受保护的字符串doInBackground(字符串…参数){
    if(fb.isSessionValid()){
    字符串结果;
    JSONObject对象j=null;
    字符串jsonUser=fb.request(“me”);
    obj=Util.parseJson(jsonUser);
    字符串email=obj.optString(“电子邮件”);
    String phonename=prefs.getString(“esmlphone”、“value”);
    InputStream isr=null;
    HttpClient HttpClient=新的DefaultHttpClient();
    String tablename=prefs.getString(“hazahuwakeylurl”,
    “walashi”);
    HttpPost HttpPost=新的HttpPost(
    “秘密”);
    HttpResponse resposne=httpclient.execute(httpost);
    HttpEntity entity=resposne.getEntity();
    isr=entity.getContent();
    BufferedReader reader=新的BufferedReader(
    新的InputStreamReader(isr,“UTF-8”),8);
    StringBuilder sb=新的StringBuilder();
    字符串行=null;
    而((line=reader.readLine())!=null){
    sb.追加(第+行“\n”);
    }
    isr.close();
    resulta=sb.toString();
    最终JSONArray jArray=新JSONArray(结果);
    试一试{
    for(int i=0;i
    尝试
    如果(json==null)
    。这通常是在Java中检查空对象的方式

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

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

    再试一次-它看起来像是一个
    JsonValue.NULL
    常量。尝试
    如果(json==JsonValue.NULL)

    那么您要做的是:

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
    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);
    }
    
    问题

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
  • “null”不是有效的JSON,但是,[null]是。检查
  • 根据您的异常,您正在将字符串转换为JSON对象。所以我猜jArray只是你的一系列反应。您应该首先将响应转换为JSON数组或对象
  • 一旦#2都解决了,检查JSONArray中的JSONObject是否为null的正确方法是什么

  • 那么当你点击网站时,它是只输出[“Success”]还是空值? 如果是这样的话,输出的不是json。要输出的内容如下所示:

    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);
    
    {
        "response": "Success"
    }
    

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

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

    你能给我举个例子吗?太棒了,很高兴我能帮上忙!请大家帮个忙,如果它解决了你的问题,就把它标记为一个被接受的答案,这样每个人都知道这个问题已经得到了回答。那么问题到底是什么呢?我看到代码更新了,但是你没有说什么其他的错误。。。
    if (json.equals(null)) {
        goodrating.setVisibility(View.GONE);
        badrating.setVisibility(View.GONE);