2015-06-18 80 views
0

我想將對象數組轉換爲for循環內的字符串數組。獲取一組對象並轉換爲字符串數組?

我從對象中提取屬性title我有幾個title字符串,現在我想將它傳遞給一個新的數組?

JSONArray shots = response.getJSONArray("shots"); 
for (int i=0; i < shots.length(); i++) { 

    // play with data 
    JSONObject post = shots.getJSONObject(i); 
    String title = post.getString("title"); 

    // turn title into an array of strings?? 

} 

編輯:

我想這

String[] mStrings = new String[15]; 

JSONArray shots = response.getJSONArray("shots"); 
for (int i=0; i < shots.length(); i++) { 

    // play with data 
    JSONObject post = shots.getJSONObject(i); 
    String title = post.getString("title"); 
    //Log.d("this is my array", "arr: " + title); 

    mStrings[i] = title; 

} 

Log.d("this is my array", "arr: " + mStrings); 

Log.d結果是D/this is my array﹕ arr: [Ljava.lang.String;@4294e620

+0

看起來你已經做到了。您已將每個標題存儲爲String數組的一個元素。我在這裏不瞭解什麼? – jrahhali

+0

它基本上沒有在日誌中顯示我。所以我不確定 –

+0

謝謝你們。我想我明白了。 –

回答

1

如果我正確理解你的問題:你想與所有的數組JSON鏡頭的標題?

JSONArray shots = response.getJSONArray("shots"); 
String titles[] = new String[shots.length()]; 
for (int i=0; i < shots.length(); i++) { 
    JSONObject post = shots.getJSONObject(i); 
    String title = post.getString("title"); 

    titles[i] = title; 
} 

使用流,你可以寫:

import java.util.stream.IntStream; 

JSONArray shots = response.getJSONArray("shots"); 
String titles[] = IntStream 
    .range(0, shots.length()) 
    .mapToObj(i -> shots.getJSONObject(i)) 
    .map(post -> post.getString("title")) 
    .toArray(String[]::new); 
} 

如果您在使用本JSONArray,你甚至可以寫:

JSONArray shots = response.getJSONArray("shots"); 
String titles[] = shots.stream() 
    .map(post -> ((JsonObject) post).getString("title")) 
    .toArray(String[]::new); 
1

做到這一點,最好的方法是創建一個新的ArrayList,您可以將每個String存儲到您從JSONObject解析它。

ArrayList<String> stringList = new ArrayList<String>(); 

JSONArray shots = response.getJSONArray("shots"); 
for (int i=0; i < shots.length(); i++) { 

    JSONObject post = shots.getJSONObject(i); 
    String title = post.getString("title"); 

    stringList.add(title); 

} 
+0

是的,但如果我想訪問循環外的數組呢? –

+0

我可以直接調用stringList嗎?最終我想將它傳遞給適配器 –

+0

是的,因爲stringList在循環之外實例化,所以您可以在更大範圍內使用它。一旦完成對每個JSONObject的解析,您就可以用字符串填充列表,並且可以簡單地將stringList對象傳遞給適配器。 –

1

你的意思是在每個標題的字符串數組中創建一個條目嗎?

如果是這樣的:

JSONArray shots = response.getJSONArray("shots"); 

List<String> titles = new ArrayList<String>(); 

for (int i=0; i < shots.length(); i++) { 

    // play with data 
    JSONObject post = shots.getJSONObject(i); 
    String title = post.getString("title"); 
    titles.add(title) 

    // turn title into an array of strings?? 

} 

String[] titleArr = new String[titles.size()]; 
titleArr = titles.toArray(titleArr); 

如果這不是你要找的內容,請提供該問題的一些詳細信息。

+0

好吧我想創建一個數組傳遞到適配器,所以我可以有一個listView –

1

使用instread的

Log.d("this is my array", "arr: " + Arrays.toString(mStrings)); 

Log.d("this is my array", "arr: " + mStrings); 
相關問題