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

标签 java android json

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

enter image description here

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

更新:

我只是使用适用于 Android 的标准 JSON 解析器对其进行解析。 JSONArray 的长度可以使用以下方法计算:

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

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

最佳答案

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

根据 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();

关于java - 计算 JSONArray 中的字符串和 JSONObject 的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31062522/

相关文章:

android - Android 系统如何处理休眠时间过长的线程?

android - 如何从sqlite数据库读取然后显示它然后在android中删除它?

jquery - FullCalendar使用jquery从url获取事件

java - 在java中对二维数组进行排序(对所有字母进行排序)

java - SpringBoot进程运行时性能问题

java - 如何在单击 AjaxLink 时显示标签组件

java - 在java中突出显示单词

android - 从 RecyclerView Adapter 开始新的 Intent

java - Get 方法返回 XML 和 JSON

javascript - 使用 'datatable' 插件将 JSON 转换为 HTML 表