我有以下字符串数据,其中包含对象数据的arraylist,如何将其转换为arraylist类型
String data="[Score{id=1, value='3.5'},
Score{id=2, value='4.5'},
Score{id=3, value='2.0'}]";
答案 0 :(得分:0)
我会在开头省略括号[],删除第一个和最后一个字符。然后,您必须拆分String以获取数组中的所有对象。最后,您必须将String对象转换为实际的Score
类。您可以使用substring
和indexOf
方法以相同的原则执行此操作。
就代码而言,这看起来像这样:
// the String containing all the objects
String data="[Score{id=1, value='3.5'}, Score{id=2, value='4.5'}, Score{id=3, value='2.0'}]";
// Cutting out the brackets []
data = data.substring(1, data.length - 1);
// Splitting the String to smaller pieces
// like "Score{id=1, value='3.5'}", etc
String[] array = data.split(",");
// Creating the ArrayList, where we will save the scores
List<Score> scores = new ArrayList<Score>();
for(int i=0;i<array.length;i++) {
// Creating the Score instance
Score score = new Score();
// Omitting the brackets {}
int start = array[i].indefOx("{") + 1;
int end = array[i].indefOx("}");
// Cutting out the String inside brackets {}
String temp = array[i].substring(start, end);
// We use the same principles again to get those values inside the brackets {}.
String[] tempArray = temp.split(",");
for(int j=0;j<tempArray.length;j++) {
int start = array[i].indefOx("=") + 1;
temp2 = tempArray[j].substring(start);
if(j == 0) {
score.setId(Integer.valueOf(temp2));
} else {
// To cut out the ''
score.setValue(temp2.substring(1, temp2.length));
}
}
// adding score instance to the list
scores.add(score);
}
我只想指出,当我使用substring
和indexOf
时,您必须验证我使用了正确的索引。如果这个字符串没有&#34;分数&#34; substring,你可以更容易地转换它,因为String代表JSONArray
。