我正在尝试将一个对象数组转换为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 :(得分: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);