2015-09-03 139 views
0

我正在使用java與Json創建一個Web服務,我真的難住在一個特定的區域。我有一個Jsonarray和JsonObject在for循環中讀取Json,但是現在我怎麼能在for循環之外的Json的第二行中選擇項?也許我的代碼的一個例子會有所幫助,我的json列表是動態的,但這是格式Java如何獲得一行Json數據以外的for循環

[{「state」:「LA」,「city」:「Kisatchie」},{「state」:「KS 」,‘城市’:‘天命’}]

現在我看了上面這段代碼的JSON

 // the total String has the whole Json data 
     JSONObject jsonn = new JSONObject(total); 

       JSONArray jArray = jsonn.getJSONArray("location_update"); 
      JSONObject jobject = null; 
    String city="";String state=""; 
      JSONArray sss = new JSONArray(); 
      for (int i = 0; i < jArray.length(); i++) { 
       jobject = jArray.getJSONObject(i); 
       city+= jobject.getString("city"); 
       state+= jobject.getString("state"); 
       sss.put(jobject); 
      } 
     // How can I for example get Row 2 of Json here outside the for loop 
     // Row 2 is this data 
     // {state":"KS","city":"Kismet"} 

我需要這個,因爲一些在JSON數據上面用於下拉選擇菜單,並且只要用戶點擊某個項目,我想顯示該行Json上的所有信息。我顯然擁有比上面顯示的更多的Json項目。我知道這個jobject = jArray.getJSONObject(i);被編號的項目,但我不知道我怎麼能拉說出來的for循環的任何建議將是巨大

+2

我可以提出一些建議嗎?不要浪費你的時間與這個尷尬的JSON庫。使用Jackson是一個更好,更直觀,更強大的用於Java的JSON庫。 – user244255

+1

我還想補充一點,你應該已經顯示了一小部分_exact_數據,你正在饋入「JSONObject」。我甚至不知道下面的答案如何能夠驗證他們的解決方案。 –

+0

我會聽到很多關於Jackson的信息。你的權利我應該發佈更多的數據,這只是我使用的是Android Studio,而數據駐留在另一個IDE中,我使用它來獲取安靜的api。我從現在開始。 –

回答

2

從Java開始於0編號,選擇第二個數組元素如下所示:

JSONArray jArray = jsonn.getJSONArray("location_update"); 
JSONObject jobject = jArray.getJSONObject(1); 
+0

謝謝你的完美 –

1

如果你想在數組中的第二個對象:

JSONObject jsonn = new JSONObject(total); 
JSONArray jArray = jsonn.getJSONArray("location_update"); 
jobject = jArray.getJSONObject(1); 

如果您已經jsonn或jArray範圍,那麼你只需要:

jobject = jArray.getJSONObject(1); 
+0

感謝演示如何做到這一點,非常感謝。 –

1

你嘗試這個之外循環

JSONObject jsonObject = jArray.getJSONObject(1); 

通過,我會更喜歡使用傑克遜圖書館和我的JSON直接映射到某個類的方式。你可以通過@mkyong來參考這個example

+0

是的,我只是做了,解決了它,我會將Json轉換成傑克遜,因爲人們說它更有用。 –

+0

這取決於你使用的是什麼框架。在一些框架(比如Spring-mvc)中,你可以通過做一些改變來直接使用jackson將你的json映射到類。 –