2013-02-04 25 views
7

Possible Duplicate:
Determine whether JSON is a JSONObject or JSONArraySunucudan yanıtın JSONAobject veya JSONArray olup olmadığını nasıl kontrol edebilirim?

Ben varsayılan olarak bazı JSONArray döndüren bir sunucu var, ama bazı hata oluştuğunda bu hata kodu ile beni JSONObject nesnesi döndürür. Ben json ayrıştırmak ve hatalarını kontrol etmeye çalışıyorum, ben hata için denetler kod parçası var:

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 ; 
} 

ama jsonResponse Tamam olduğunda ben JSONException olsun ve bu kadar bir JSONArray (JSONArray JSONObject nesnesi dönüştürülebilir olamaz) nasıl jsonResponse JSONArray veya JSONObject ile bana yardımcı olup olmadığını kontrol etmek için?

cevap

15

Kullanım JSONTokener dönüştürmek

JSONArray ja = new JSONArray(jsonResponse); 

aşağıda JsonArray dönüştürün. JSONTokener.nextValue(), örneğe bağlı olarak uygun türe dinamik olarak dönüştürülebilen bir Object verecektir.

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

Sunucudan aldığınız dönüştürme String yanıtını, Özel Durum neden olan JSONObject içine alıyorsunuz. Sunucudan JSONArray'u alacaksınız dediğiniz gibi, JSONArray'a dönüştürmeyi deneyin. Lütfen JSONObject ve JSONArray için dize yanıtı dönüştürmek için size yardımcı olacak bu link bakın. Eğer [(Açık Meydan Braket) ile başlar tepki Eğer yanıt {(açık çiçek Mesnetine) ile başlıyorsa o zaman o

JSONObject jo = new JSONObject(jsonResponse); 
İlgili konular