我遇到了一些问题,我希望得到一个JSON格式的数组对象字符串,
并且阵列确定[{"代码":" 123","路径":" 456"},.... }]
但在工作时
JArray.getJSONObject(0).getString("code")
它的显示" null"
有人能解释为什么会这样吗?
感谢您的解决方案
for(int i=0;i<JArray.length();i++) {
try {
avr_hash = JArray.getJSONObject(i).getString("code");
img_adress[JArray.length()] = JArray.getJSONObject(i).getString("path");
}catch (JSONException e){
Log.e("Catch obj",e.toString());
}
}
IDE:Android Studio
解决方案:数组索引设置错误
答案 0 :(得分:2)
我认为您应该将exist_json_array_count
替换为i
,如下所示
for(int i=0;i<exist_json_array_count;i++) {
try {
avr_hash = JArray.getJSONObject(i).getString("code");
img_adress[i] = JArray.getJSONObject(i).getString("path");
}catch (JSONException e){
Log.e("Catch obj",e.toString());
}
原因是,索引不应该是数组的大小,因为它从0到13开始(因为大小是14)。
答案 1 :(得分:1)
对于错误消息,似乎数组正由不存在的索引访问。
int exist_json_array_count = JArray.length();
以上表示数组的长度。 Java中的数组具有零基索引。因此,长度为4的数组将具有0,1,2,3索引处的元素。
img_adress[exist_json_array_count] = JArray.getJSONObject(exist_json_array_count).getString("path");
在上面的行中,“exist_json_array_count”变量具有数组的长度,这解释了使用无效索引访问数组的错误消息。
显然,从错误消息中可以看出:[0..14]表示有效索引的范围包括0且不包括14.
img_adress[i] = JArray.getJSONObject(i).getString("path");
以上代码是建议的更改,假设您希望所有路径都在im_address数组中。