2016-03-30 25 views
-2

Ben nesneler verilerin arraylist ihtiva aşağıdaki String veri, ben ilk keserek başında parantez [] atlanmasına tipdönüştürme dize nesne arraylistof için

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

Şüphesiz bölünme dizelerinin binlerce örneğinden biri size cevap verecektir. – redFIVE

+0

'arraylist türüne çevirmek' anlamına gelir? Gerçekten üzgünüm ama sorumunu alamadım. Bana beklenen çıktı ne olacağını söyler misiniz? – Bikku

+0

Listelenmesi gereken nesnelerin bir dizi listesine dönüştürmem gerekiyor. Liste lists = –

cevap

0

arraylist dönüştürebilirsiniz nasıl ve son karakter. Ardından dizideki tüm nesneleri almak için dizgiyi bölmeniz gerekir. Sonunda String nesnelerini gerçek Score sınıflarına dönüştürmelisiniz. Bunu aynı ilke ile substring ve indexOf yöntemlerini kullanarak yapabilirsiniz. kod açısından

, bu şuna benzer olacaktır: Ben substring ve indexOf kullanıldığında

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

} 

Sadece, hakli endeksleri kullanılan doğrulamak zorunda kalacağını işaret etmek isterim. Bu Dize "Puan" alt dizesi olmadan olurdu, bu daha kolay dönüştürmek mümkün olurdu, daha sonra Dize bir JSONArray temsil eder.