2017-04-24 24 views
0
/** 
* 5 points 
* 
* You will write a method that converts a JSON Object into a Song object. It should assume that the input is in the format: 
* {"title":"Lose Yourself", "artist":"Eminem", "ratings":[5,5,4,5], "youtubeID":"xFYQQPAOz7Y"} 
* 
* @param jsonSong A song in JSON format 
* @return A Song object with the data from the JSON Value 
*/ 
public static Song jsonToSong(JsonObject jsonSong){ 
    String title =jsonSong.get("title").asString(); 
    String YoutubeID =jsonSong.get("youtubeID").asString(); 
    String artist =jsonSong.get("artist").asString(); 



    ArrayList<Integer> ratings = new ArrayList<Integer>(); 

    Song object = new Song(YoutubeID,title,artist,ratings); 
    object.setTitle(title); 
    object.setArtist(artist); 
    object.setRatings(ratings); 
    object.setYoutubeID(YoutubeID); 


    return object; 

Ich habe diesen Code geschrieben, der ein JsonObject in einen Typ Song-Objekt konvertiert, alles konvertiert außer für die Arraylist (Bewertungen).Erhalten Sie Daten von ArrayList in einer anderen Klasse?

Wie erhalte ich seine Daten korrekt mit Getter und Setter-Methoden?

Meine Getter Setter-Methoden sind:

public ArrayList<Integer> getRatings(){ 
    return ratings; 
} 

public void setRatings(ArrayList<Integer> ratings){ 
    this.ratings = ratings; 
} 

Der Konstruktor:

// Constructor 
public Song(String youtubeID, String title, String artist, ArrayList<Integer> ratings){ 
    this.youtubeID = youtubeID; 
    this.title = title; 
    this.artist = artist; 
    this.ratings = ratings; 
} 

Hierher Sie, dass alles wandelt, außer für die Bewertung sehen kann, wenn durch die grader lief

Incorrect on input: {"title":"Comfortably Numb","artist":"Pink Floyd","ratings":[5,4,5,5],"youtubeID":"_FrOQC-zEog"} 
Expected output : {title:Comfortably Numb, artist:Pink Floyd, ratings:[5, 4, 5, 5], youtubeID:_FrOQC-zEog} 
Your output  : {title:Comfortably Numb, artist:Pink Floyd, ratings:[], youtubeID:_FrOQC-zEog} 
Score: 0 
+0

Was ist der Punkt die gleichen Daten in Ihr Konstruktor vorbei und Setter? Und was genau ist deine Frage? – shmosel

+0

Ich muss die Daten aus Arraylist-Bewertungen verwenden, die in etwa so aussehen könnten [5,6,5], um sie in die SongObject-Bewertungen einzubauen. – Gintoki

Antwort

0
 ArrayList<Integer> ratings = new ArrayList<Integer>(); 
      JsonValue collect = jsonSong.get("ratings"); 
      JsonArray rate = collect.asArray(); 
      for(int i=0; i<rate.size(); i++){ 
       ratings.add(rate.get(i).asInt()); 
      } 
0

Ich weiß nicht, welche JSON-Bibliothek Sie verwenden, aber ich denke, dass JsonObject so etwas wie mich hat thod getJsonArray(), können Sie versuchen, ein Objekt mit dem Typ JsonArray zu verwenden, dann iterieren und erhalten, was Sie wollen.

Oder so etwas wie dieses

 JSONArray ratings= (JSONArray) jsonSong.get("ratings"); 
     Iterator<Integer> iterator = ratings.iterator(); 
     while (iterator.hasNext()) { 
      System.out.println(iterator.next()); 
     } 
Verwandte Themen