2013-05-07 7 views
7

ich einen Dienst schlagen und manchmal so etwas wie dies immer wieder:Wie erkennt man, ob die Rückgabe JSONObject oder JSONArray mit JSON-simple (Java) ist?

{ "param1": "value1", "param2": "value2" } 

und wie dies manchmal immer Rückkehr:

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }] 

Wie kann ich feststellen, was ich bekomme? Beide in einen String bewerten, wenn ich getClass(), aber wenn ich versuche, dies zu tun:

json = (JSONObject) new JSONParser().parse(result); 

auf dem zweiten Fall erhalte ich eine Ausnahme

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject 

Wie dies zu vermeiden? Ich möchte nur wissen, wie ich überprüfen kann, was ich zurückbekomme. (Der erste Fall wird manchmal [] drin haben, also kann ich keinen Index machen und ich hätte einen saubereren Weg als nur das erste Zeichen zu überprüfen.

Es muss eine Art von Methode geben, die das überprüft?

+0

Es sollte ziemlich einfach sein zu überprüfen, ob der String mit '[]' beginnt und endet. Was hast du probiert? – ApproachingDarknessFish

+0

Ich kann sagen, ob es beginnt und endet mit [], aber dann ist das Problem, dass ich eine Zeichenfolge "[{\ param1 \" ...}, {...}] "bekomme, die ich nicht konvertieren kann in ein Array wieder. – PixMach

Antwort

19

Einfache Java:

Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) { 
    JSONObject jo = (JSONObject) obj; 
} else { 
    JSONArray ja = (JSONArray) obj; 
} 

Sie können auch testen, ob die (vorgeblichen) JSON beginnt mit einem [ oder einem {, wenn Sie den Aufwand für das Parsen die falsche Art von JSON Aber seien Sie vorsichtig mit vermeiden wollte. führende Leerzeichen

+0

Danke. Das hat meine Frage beantwortet. Jetzt um den Rest davon herauszufinden :) – PixMach

+0

Danke Budy. :) – Krishna