Comment vérifier si un élément est un JSONArray ou un JSONObject. J'ai écrit le code pour vérifier,
if(jsonObject.getJSONObject("Category").getClass().isArray()) {
} else {
}
Dans ce cas, si l'élément 'category' est JSONObject, alors il fonctionne correctement, mais s'il contient un tableau, il génère une exception: JSONArray ne peut pas être converti en JSONObject. S'il vous plaît aider. Merci.
Oui, c'est parce que la getJSONObject("category")
essaiera de convertir cette String
en JSONObject, ce qui donnera une JSONException
. Vous devriez faire ce qui suit:
Vérifiez si cet objet est une JSONObject
en utilisant:
JSONObject category=jsonObject.optJSONObject("Category");
qui retournera un JSONObject
ou null
si l'objet category
n'est pas un objet json. Ensuite, procédez comme suit:
JSONArray categories;
if(category == null)
categories=jsonObject.optJSONArray("Category");
qui renverra votre JSONArray
ou null si ce n'est pas un JSONArray
valide.
Même si vous avez obtenu votre réponse, elle peut néanmoins aider les autres utilisateurs ...
if (Law.get("LawSet") instanceof JSONObject)
{
JSONObject Lawset = Law.getJSONObject("LawSet");
}
else if (Law.get("LawSet") instanceof JSONArray)
{
JSONArray Lawset = Law.getJSONArray("LawSet");
}
Ici Law
est autre JSONObject
et LawSet
est la clé que vous voulez trouver comme JSONObject or JSONArray
.
String data = "{ ... }";
Object json = new JSONTokener(data).nextValue();
if (json instanceof JSONObject)
//you have an object
else if (json instanceof JSONArray)
//you have an array
tokenizer est capable de retourner plusieurs types: http://developer.Android.com/reference/org/json/JSONTokener.html#nextValue ()
if (element instanceof JSONObject) {
Map<String, Object> map = json2Java.getMap(element
.toString());
if (logger.isDebugEnabled()) {
logger.debug("Key=" + key + " JSONObject, Values="
+ element);
}
for (Entry<String, Object> entry : map.entrySet()) {
if (logger.isDebugEnabled()) {
logger.debug(entry.getKey() + "/"
+ entry.getValue());
}
jsonMap.put(entry.getKey(), entry.getValue());
}
}
Vous pouvez utiliser instanceof
pour vérifier le type du résultat obtenu. Ensuite, vous pouvez le gérer comme vous le souhaitez.