JSON Java检查元素是JSONArray或JSONObject
如何检查元素是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检查您得到的结果类型。然后您可以根据需要处理它。
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。