JSON Java检查元素是JSONArray或JSONObject

JSON Java检查元素是JSONArray或JSONObject,java,android,web-services,json,Java,Android,Web Services,Json,如何检查元素是JSONArray还是JSONObject。我写了代码来检查 if(jsonObject.getJSONObject("Category").getClass().isArray()) { } else { } 在这种情况下,如果元素“category”是JSONObject,那么它可以正常工作,但是如果它包含数组,那么它会抛出异常:JSONArray无法转换为JSONObject。请帮忙。 谢谢。您可以使用instanceof检查您得到的结果类型。然后您可以根据需要处理它。

如何检查元素是JSONArray还是JSONObject。我写了代码来检查

if(jsonObject.getJSONObject("Category").getClass().isArray()) {

} else {

}
在这种情况下,如果元素“category”是JSONObject,那么它可以正常工作,但是如果它包含数组,那么它会抛出异常:JSONArray无法转换为JSONObject。请帮忙。
谢谢。

您可以使用
instanceof
检查您得到的结果类型。然后您可以根据需要处理它。

是的,这是因为
getJSONObject(“category”)
将尝试将该
字符串
转换为JSONObject,该字符串将抛出一个
JSONException
。您应该执行以下操作:

   JSONArray categories;
   if(category == null)
        categories=jsonObject.optJSONArray("Category");
使用以下方法检查该对象是否为
JSONObject

   JSONObject category=jsonObject.optJSONObject("Category");
如果
category
对象不是json对象,则返回
JSONObject
null
。 然后执行以下操作:

   JSONArray categories;
   if(category == null)
        categories=jsonObject.optJSONArray("Category");
它将返回您的
JSONArray
,如果它不是有效的
JSONArray
if(JSONObject的元素实例),则返回null{
           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());
                }
            }
Map Map=json2Java.getMap(元素 .toString()); if(logger.isDebugEnabled()){ logger.debug(“Key=“+Key+”JSONObject,值=” +元素); } for(条目:map.entrySet()){ if(logger.isDebugEnabled()){ logger.debug(entry.getKey()+“/” +entry.getValue()); } put(entry.getKey(),entry.getValue()); } }

tokenizer能够返回更多类型:

即使您已经得到了答案,但它仍然可以帮助其他用户

 if (Law.get("LawSet") instanceof JSONObject)
 {
    JSONObject Lawset = Law.getJSONObject("LawSet");                        
 }
 else if (Law.get("LawSet") instanceof JSONArray)
{
    JSONArray Lawset = Law.getJSONArray("LawSet");
}

这里的
Law
是另一个
JSONObject
,而
LawSet
是您希望作为
JSONObject或JSONArray
找到的键,请检查它。。。。可能对你有帮助…非常感谢我应该在对象和数组之间进行验证。。所以得到了解决方案!!!!!:)哇!救了我一天。。。谢谢@Vikas。