Java 计算JSONArray中字符串和JSONObject的数量

Java 计算JSONArray中字符串和JSONObject的数量,java,android,json,Java,Android,Json,我试图解析JSON模式,需要从JSONArray获取所有图像链接,并将其存储在java数组中。JSONArray如下所示: 如何仅获取图像数组中的字符串数,例如,在本例中,字符串数应为4?我知道如何获取数组的完整长度,但如何仅获取字符串数 更新: 我只是使用android的标准JSON解析器对其进行解析。JSONArray的长度可以使用以下公式计算: JSONArray imageArray = hist.getJSONArray("image"); int len = imageArray.

我试图解析JSON模式,需要从JSONArray获取所有图像链接,并将其存储在java数组中。JSONArray如下所示:

如何仅获取图像数组中的字符串数,例如,在本例中,字符串数应为4?我知道如何获取数组的完整长度,但如何仅获取字符串数

更新:

我只是使用android的标准JSON解析器对其进行解析。JSONArray的长度可以使用以下公式计算:

JSONArray imageArray = hist.getJSONArray("image");
int len = imageArray.length();

在这种情况下,
len
将等于9

我不确定是否有更好的方法(可能有),但这里有一个选择:

根据,如果指定索引处的元素不是JSON对象,
getJSONObject
将抛出一个
JSONException
。因此,您可以尝试使用
getJSONObject
获取每个索引处的元素。如果它抛出一个
JSONException
,那么您就知道它不是一个JSON对象。然后可以尝试使用
getString
获取元素。下面是一个粗略的例子:

JSONArray imageArray = hist.getJSONArray("image");
int len = imageArray.length();
ArrayList<String> imageLinks = new ArrayList<String>();
for (int i = 0; i < len; i++) {
    boolean isObject = false;
    try {
        JSONArray obj = imageArray.getJSONObject(i);
        // obj is a JSON object
        isObject = true;
    } catch (JSONException ex) {
        // ignore
    }
    if (!isObject ) {
        // Element at index i was not a JSON object, might be a String
        try {
            String strVal = imageArray.getString(i);
            imageLinks.add(strVal);
        } catch (JSONException ex) {
            // ignore
        }
    }
}
int numImageLinks = imageLinks.size();
JSONArray imageArray=hist.getJSONArray(“图像”);
int len=imageArray.length();
ArrayList imageLinks=新建ArrayList();
对于(int i=0;i
您使用的JSON解析器是什么?你能解释一下你说的
是什么意思吗?我知道如何获取数组的完整长度,但我如何才能只获取字符串的数量?检查更新plz。你解释错了,没有子数组。只有1个数组映像包含很少的字符串和很少的JSONObject。我可以使用imageArray.length()获得JSONArray中的元素总数;但是如果我只需要得到字符串的数目,那么我怎么能得到这个数目呢?