2015-06-18 52 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); 
相关问题