程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> json-如何檢查服務器中的響應是JSONAobject還是JSONArray?

json-如何檢查服務器中的響應是JSONAobject還是JSONArray?

編輯:編程綜合問答
如何檢查服務器中的響應是JSONAobject還是JSONArray?

程序中的一個服務器,默認返回一些JSONArray。但當一些錯誤發生時,它返回JSONObject錯誤的代碼。我想解析json來檢查錯誤。下面的代碼用來解析錯誤:

public static boolean checkForError(String jsonResponse) {

    boolean status = false;
    try {

        JSONObject json = new JSONObject(jsonResponse);

        if (json instanceof JSONObject) {

            if(json.has("code")){
                int code = json.optInt("code");
                if(code==99){
                    status = true;
                }
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return status ;
}

但是當 jsonResponse 可以運行時確獲得 JSONException。它是一個JSONArray,JSONArray
不能轉換成 JSONOBject。如何確認 jsonResponse 傳過來的值是 JSONArray 還是 JSONObject ?

最佳回答:


我明白你的意思了,首先看下這兩個類型轉換為字符串後的區別

    ......
    JSONObject jo = createJSONObject();    
    JSONArray ja = new JSONArray();
    ja.put(jo);        
    System.out.println("jo is "+jo.toString());//{"sex":"男","username":"ZhangSam","score":123}
    System.out.println("ja is "+ja.toString());//[{"sex":"男","username":"ZhangSam","score":123}]      
}
public static JSONObject createJSONObject(){
    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject.put("username", "ZhangSam");     
        jsonObject.put("sex", "男");
        jsonObject.put("score", new Integer(123));          
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return jsonObject;
}

所以你要想寫都能識別的,只需正則檢查是否[開頭即可
然後才能進行你的這一步:如是非[開頭,JSONObject json = new JSONObject(jsonResponse);
另外還一種方法就是在finally中處理
最後一點與題無關的是,JSONObject與JSONArray可以互轉,
(toJSONObject/toJSONArray)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved