在Android/Java中检查对象是真实的JSONArray还是JSONObject
我做了一些研究,发现了这两种检查方法,但我不知道哪一种会更慢,导致更多的开销 方法1:在Android/Java中检查对象是真实的JSONArray还是JSONObject,java,android,Java,Android,我做了一些研究,发现了这两种检查方法,但我不知道哪一种会更慢,导致更多的开销 方法1: public boolean isJSONValid(String test) { try { new JSONObject(test); return true; } catch(JSONException ex) { return false; } } 方法2: if (Law.get("LawSet") instanceof J
public boolean isJSONValid(String test)
{
try {
new JSONObject(test);
return true;
} catch(JSONException ex) {
return false;
}
}
方法2:
if (Law.get("LawSet") instanceof JSONObject)
{
JSONObject Lawset = Law.getJSONObject("LawSet");
}
else if (Law.get("LawSet") instanceof JSONArray)
{
JSONArray Lawset = Law.getJSONArray("LawSet");
}
EDIT:显然,根据我在这个问题下面得到的评论,这两种方法都不起作用,所以如何检查传入的字符串是有效的JSONObject还是JSONArray?试试这个
String myData= "{ ... }";
Object json = new JSONTokener(myData).nextValue();
if (json instanceof JSONObject)
//This is object
else if (json instanceof JSONArray)
//This is array
这将很好它们是不可比的技术。在第一种情况下,您有一个
字符串
。在第二种情况下,您没有字符串
。我能否将从服务器获取的JSON传递给第一个方法?假设“从服务器获取的JSON”是字符串
,则是。通常情况就是这样。但是,第二种方法是无用的,因为您已经解析了JSON,否则您就不会有JSONObject
和JSONArray
的实例作为候选对象。这就是我要检查的。有时服务器返回一个JSON字符串,但有时由于服务器错误,它会返回类似于…此处的某个php错误
,因此我想检查我接收的是JSON还是stringJSON可以是数组还是对象。如果字符串不是JSON对象,则第一个方法将失败。这意味着如果该字符串是JSON数组,或者该字符串不是有效的JSON,那么它将失败。