2017-04-24 19 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; 

私はJsonObjectをタイプソングオブジェクトに変換するこのコードを書いていますが、すべてがarraylist(定格)を除いて変換されます。別のクラスのarrayListからデータを取得しますか?

ゲッタとセッタメソッドを使用してデータを正しく取得するにはどうすればよいですか?

マイゲッターセッターメソッドは次のとおりです。

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

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

コンストラクタ:

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

こっちにお年生

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

よう

か何かあなたのコンストラクタとセッターに同じデータを渡すのポイントは何ですか?あなたの質問は何ですか? – shmosel

+0

私はこのような[5,6,5]のように見えるarraylist格付けのデータをSongObjectの評価に使う必要があります。 – Gintoki

答えて

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

を駆け抜けたとき、すべてが格付けを除き変換していることがわかりますあなたが使っているJsonライブラリが何であるかわからないが、私はこのJsonObjectが私のようなものだと思うthod getJsonArray()を使用すると、JsonArray型のオブジェクトを取得し、それを反復して必要なものを得ることができます。この

 JSONArray ratings= (JSONArray) jsonSong.get("ratings"); 
     Iterator<Integer> iterator = ratings.iterator(); 
     while (iterator.hasNext()) { 
      System.out.println(iterator.next()); 
     } 
関連する問題