2017-10-22 6 views
1

次の形式でAPIの応答を取得しています。私は私の目標は、コースのコース配列を取得し、私はonline toolを使用して作成したPOJO(プレーン古いJavaオブジェクト)に割り当てることであるJSON配列をpojoオブジェクト配列に変更する

{ 
       Course: [ 
        { 
        "Year": 2017, 
        "CourseTitle": "..", 
        "Quarter": "autumn", 
        }, 
       { 
        "Year": 2017, 
        "CourseTitle": "..", 
        "Quarter": "autumn", 
       } 

       ], 

       Instructor: { 

       "name": , 
       "address": 
       } 
    } 

のAndroidプロジェクトに取り組んでいます。私はGSONライブラリも使用しています。オンラインでさまざまな実装が見つかったので、やっとこれを使用して、コースの配列オブジェクトを保持する入れ子オブジェクト「コース」をフィルタリングできました。

JsonParser parser = new JsonParser(); 
JsonObject element = (JsonObject)parser.parse(response); 
JsonElement responseWrapper = element.getAsJsonArray("Courses"); 

デバッガツールを使用してresponseWrapperを見ると、コース(オブジェクト)のJSON配列が保持されます。私は

パブリッククラスコースは、私は、次の行を追加しParcelable {

private String href; 
private int year; 
private String courseTitle; 
private String quarter; 
private String courseTitleLong; 
private String curriculumAbbreviation; 
private String courseNumber; 

}

を実装を作成し、「コース」POJOクラスにこれらのデータを割り当てたいと思いました。

Course[] courseList = gson.fromJson(responseWrapper,Course[].class); 

CourseListはCourseオブジェクトの配列ですが、私がデバッガツールを使って得たものを見ると、すべてのフィールド変数は "null"です。どうすればこの問題を解決できますか?私が近づいたはずのより良い方法はありますか?全体の目的はコースオブジェクトの配列を取得するので、私はそれを表示するために操作することができます。

+0

問題が解決しました。私の問題は、自動生成pojoクラスを使用していたことです。メンバー変数を見ると、名前がapiから取得した名前と一致しません。たとえば、APIではキーは「CourseTitle」で、私のpojoクラスでは「courseTitle」としています。これは、すべてのメンバー変数に当てはまります。昨日、私は1時間かかりました、それでは、寝ました。朝起きました。問題が見えます。私が学んだレッスンは、あなたが物事にこだわっていれば、それを脇に置いたり、休憩したりすることです。 – user1986244

答えて

0

大文字小文字の区別なく、jsonレスポンスに完全に一致するようにフィールドの名前を変更してください。

+0

最初の応答をありがとうが、あなたの応答を編集しました。今、あなたは私のコメントで言ったのと同じことを書いた。あなたはそれを見ていないかもしれません。あなたの最初の応答はリストを使用することでした user1986244

+0

ああ大丈夫です!私の編集後に3つの可能性を追加したことに気がついたらうん。 1)リスト2)リストを持つオブジェクトを作成し、3番目のフィールドはフィールドの名前です。私は最初の2を試した後にもう一度それを変更し、違いがないことを認識しました。がんばろう! – riadrifai

関連する問題