获取一组对象并转换为字符串数组?

时间:2015-06-18 22:35:27

标签: java android arrays

我正在尝试将一个对象数组转换为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

4 个答案:

答案 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 :(得分: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);

}

答案 2 :(得分:1)

你的意思是在每个标题的String数组中创建一个条目?

如果是这样的话:

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

如果这不是您想要的,请在问题中提供更多细节。

答案 3 :(得分:1)

使用

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

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