2016-03-20 25 views
0

所以我有一個json文件,它有大約350個對象。我已經提供了它的外觀下面的示例:循環瀏覽json並通過id選取隨機對象 - Android/JAVA

"type": "success", 
    "value": [ 
    { 
     "id": 1, 
     "joke": "Joke 1 - Text", 
     "categories": [ 
     "explicit" 
     ] 
    }, 
    { 
     "id": 2, 
     "joke": "Joke 2 - Text.", 
     "categories": [ 

     ] 
    }, 
    { 
     "id": 3, 
     "joke": "Joke 3 - Text", 
     "categories": [ 

     ] 
    }, 

到目前爲止,我已經能夠得到的第一個笑話,但我用了一個JSON其中只有一個笑話。現在我想循環一切,並得到2個隨機笑話。我看過人們用json數組來循環的例子,但它不適用於我,因爲我的json文件結構不同。因此,這是我得到了第一個對象:

String finalJson = buffer.toString(); 

      JSONObject parentObject = new JSONObject((finalJson)); 

      JSONObject finalObj = parentObject.getJSONObject("value"); 


      String jokes = finalObj.getString("joke"); 
      int id = finalObj.getInt("id"); 


      return id + " " + jokes; 

就像我之前說我要通過每個對象循環再挑2級隨機ID的,並得到了玩笑。我不知道這是否是最好的方法,但我的想法是有一個Random r其最大值爲350,最小值爲1,然後根據隨機nr選擇id的笑話對象。

回答

1

值不是一個JSONObject,而是一個JSONArray,這應該給你兩個隨機笑話

String finalJson = buffer.toString(); 

JSONObject parentObject = new JSONObject((finalJson)); 

//JSONObject finalObj = parentObject.getJSONObject("value"); 
JSONArray jokeArray = parentObject.getJSONArray("value"); 

Random r = new Random(); 
String joke1 = jokeArray.getJSONObject(r.nextInt(jokeArray.length())).getString("joke"); 
String joke2 = jokeArray.getJSONObject(r.nextInt(jokeArray.length())).getString("joke"); 

這也依賴於事實的ID將始終從1開始,每次遞增1

編輯

太顯示ID,進一步打破了下去......

String finalJson = buffer.toString(); 

JSONObject parentObject = new JSONObject((finalJson)); 

//JSONObject finalObj = parentObject.getJSONObject("value"); 
JSONArray jokeArray = parentObject.getJSONArray("value"); 

Random r = new Random(); 
int id1 = r.nextInt(jokeArray.length()) 
String joke1 = jokeArray.getJSONObject(id1).getString("joke"); 

int id2 = r.nextInt(jokeArray.length()) 
String joke2 = jokeArray.getJSONObject(id1).getString("joke"); 

String joke1WithID = id1 + " " + joke1 
String joke2WithID = id2 + " " + joke2 
+0

謝謝,但我還想顯示上面編輯的「挑選隨機笑話」的編號以及 –

+0

,同樣依賴於ID總是從1開始並一次遞增1的事實 –