我正在接受json回复
{"image_data": [
[
{
"post_id": "331",
"meta_key": "_wp_attached_file",
"meta_value": "2014/09/443025.jpg"
}
],
[
{
"post_id": "364",
"meta_key": "_wp_attached_file",
"meta_value": "2014/09/632026.jpg"
}
],
[
{
"post_id": "657",
"meta_key": "_wp_attached_file",
"meta_value": "2014/10/233506.jpg"
}
],
[
{
"post_id": "727",
"meta_key": "_wp_attached_file",
"meta_value": "2014/10/653413.jpg"
}
],
"null",
"null",
[
{
"post_id": "958",
"meta_key": "_wp_attached_file",
"meta_value": "2014/10/801582.jpg"
}
]
]
}
问题是因为空值而导致类型不匹配的错误。在给定的json响应中,有三个空值。我必须检测到该空值并忽略该值。我试过了
JSONArray imageDataArray = response.getJSONArray("image_data");
for (int j = 0; j < imageDataArray.length(); j++) {
// ad image data
if ((imageDataArray.getJSONArray(j)) == null) {
continue;
}else{
JSONArray adimageData = imageDataArray
.getJSONArray(j);
//doing my work
}
}
但是出现类型不匹配错误。在logcat中,它表示值null无法转换为jsonarray。我需要解决方案......请建议我做正确的事
答案 0 :(得分:0)
尝试更改此行:
if ((imageDataArray.getJSONArray(j)) == null) {
到
if ((imageDataArray.isNull(j))) {
这将检查JSONArray以查看您的索引是否为空,因此您不必使用导致错误的getJSONArray(index)
。
答案 1 :(得分:0)
您需要将其转换为JSON数组吗?你不能检查
if(imageDataArray.get(i) == null)
或 if(imageDataArray.get(i)==&#34; null&#34;)
资料来源:[http://www.json.org/javadoc/org/json/JSONArray.html][1]
答案 2 :(得分:0)
我认为你会让json数据保持一致。 如果你修改你的字符串json删除&#34; null&#34;,你的json数据将是一致的。 下面是您的数据示例,它可以正常工作。 我使用过org.json.simple库。
jsdata = jsdata.replace("\"null\",","");
try {
JSONObject jso = (JSONObject) jsonParser.parse(jsdata);
JSONArray jsArray = (JSONArray) jso.get("image_data");
//Iterator<JSONObject> iterator = jsArray.iterator();
Iterator<JSONArray> iterator = jsArray.iterator();
while(iterator.hasNext()) {
JSONArray a2 = iterator.next();
Iterator<JSONObject> i2 = a2.iterator();
while(i2.hasNext()){
JSONObject itemObj = i2.next();
String s = (String) itemObj.get("post_id");
Log.i("MYTAG",s);
}
}
} catch (ParseException e) {
e.printStackTrace();
}