计算JSONArray

时间:2015-06-25 23:34:16

标签: java android json

我正在尝试解析JSON模式,我需要从JSONArray获取所有图像链接并将其存储在java数组中。 JSONArray看起来像这样:

enter image description here

如何才能获得图像数组中的字符串数量,例如在这种情况下它应该是4?我知道如何获得数组的全长,但我怎么才能得到字符串的数量?

更新

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

JSONArray imageArray = hist.getJSONArray("image");
int len = imageArray.length();
在这种情况下,

len将等于9。

1 个答案:

答案 0 :(得分:2)

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

根据the Android docs,如果指定索引处的元素不是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();