我正在尝试解析 JSON 模式,我需要从 JSONArray 获取所有图像链接并将其存储在 java 数组中。 JSONArray 如下所示:
我怎样才能只获得图像数组中的字符串数量,例如在这种情况下它应该是 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/