2016-02-19 66 views
1

我遇到一些麻煩,我想會得到一個JSON格式數組對象的字符串,JSON對象不能GetString的

和陣列明確[{「代碼」:「123」,「路徑」 : 「456」},...}]

JArray.getJSONObject(0).getString("code") 

工作時,它顯示 「空」

有沒有人可以解釋爲什麼會發生?

感謝您的解決方案

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()); 
      } 
} 

enter image description here

IDE:Android Studio中

解決方案:數組索引設置錯誤

+3

不應該在循環中使用'i'而不是'exist_json_array_count'嗎? –

+0

你是對的,但0或下一個 – JimmyHo

回答

2

我想你應該更換exist_json_array_counti如下

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)。

+0

謝謝幫助,但問題仍然存在與getString – JimmyHo

+0

也許你可以在更改索引後發佈新的錯誤消息? – Elye

+0

我簡化了exists_json_array_count - > JArray.length()和修正索引,它恢復了作業,非常感謝! – JimmyHo

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數組。