Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android/Java中检查对象是真实的JSONArray还是JSONObject_Java_Android - Fatal编程技术网

在Android/Java中检查对象是真实的JSONArray还是JSONObject

在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

我做了一些研究,发现了这两种检查方法,但我不知道哪一种会更慢,导致更多的开销

方法1:

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,那么它将失败。