将字符串转换为arraylistof对象

时间:2016-03-30 20:55:45

标签: java arrays string arraylist

我有以下字符串数据,其中包含对象数据的arraylist,如何将其转换为arraylist类型

 String data="[Score{id=1, value='3.5'}, 
  Score{id=2, value='4.5'}, 
  Score{id=3, value='2.0'}]";

1 个答案:

答案 0 :(得分:0)

我会在开头省略括号[],删除第一个和最后一个字符。然后,您必须拆分String以获取数组中的所有对象。最后,您必须将String对象转换为实际的Score类。您可以使用substringindexOf方法以相同的原则执行此操作。

就代码而言,这看起来像这样:

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

}

我只想指出,当我使用substringindexOf时,您必须验证我使用了正确的索引。如果这个字符串没有&#34;分数&#34; substring,你可以更容易地转换它,因为String代表JSONArray