2013-02-04 14 views
7

Possible Duplicate:
Determine whether JSON is a JSONObject or 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 ; 
} 

लेकिन मैं JSONException जब jsonResponse ठीक है और यह एक JSONArray (JSONArray JSONObject में परिवर्तित नहीं किया जा सकता है) कैसे यह जांचने के लिए कि क्या jsonResponse मुझे JSONArray या JSONObject प्रदान करेगा?

उत्तर

15

उपयोग JSONTokener को परिवर्तित। JSONTokener.nextValue() आपको Object देगा जो उदाहरण के आधार पर गतिशील रूप से उपयुक्त प्रकार पर डाला जा सकता है।

Object json = new JSONTokener(jsonResponse).nextValue(); 
if(json instanceof JSONObject){ 
    JSONObject jsonObject = (JSONObject)json; 
    //further actions on jsonObjects 
    //... 
}else if (json instanceof JSONArray){ 
    JSONArray jsonArray = (JSONArray)json; 
    //further actions on jsonArray 
    //... 
} 
0

आप सर्वर से प्राप्त होने वाली स्ट्रिंग प्रतिक्रिया को JSONObject में कनवर्ट करने की कोशिश कर रहे हैं जो अपवाद पैदा कर रहा है। जैसा कि आपने कहा था कि आपको सर्वर से JSONArray मिलेगा, आप JSONArray में कनवर्ट करने का प्रयास करते हैं। कृपया link देखें जो JSONObject और JSONArray पर स्ट्रिंग प्रतिक्रिया को परिवर्तित करने में आपकी सहायता करेगा। आप [(ओपन वर्ग कोष्ठक) के साथ शुरू होता है प्रतिक्रिया तो

JSONArray ja = new JSONArray(jsonResponse); 

नीचे के रूप में JsonArray को परिवर्तित करता है, तो आप अपनी प्रतिक्रिया {(खुला फूल ब्रैकेट) के साथ शुरू होता है तो

JSONObject jo = new JSONObject(jsonResponse);