我正在尝试解析JSON模式,我需要从JSONArray获取所有图像链接并将其存储在java数组中。 JSONArray看起来像这样:
如何才能获得图像数组中的字符串数量,例如在这种情况下它应该是4?我知道如何获得数组的全长,但我怎么才能得到字符串的数量?
更新
我只是使用标准的JSON解析器为android解析它。 JSONArray的长度可以使用以下公式计算:
JSONArray imageArray = hist.getJSONArray("image");
int len = imageArray.length();
在这种情况下, len
将等于9。
答案 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();