2016-07-27 12 views
0

私は配列解析のためにボレークラスを使用していますが、私は次の応答を得ていますが、私は応答している配列アイテムの同じ順序で表示したいのですが、Androidでの応答と同じように配列オブジェクトの順序を設定する方法は?

{ 
    "output": { 
    "status": "1", 
    "GolfCourseTee": { 
     "Men": [ 
     { 
      "tee_id": 2, 
      "tee_name": "Blue", 
      "tee_color": "#000099" 
     }, 
     { 
      "tee_id": 4, 
      "tee_name": "Yellow", 
      "tee_color": "#FFFF00" 
     }, 
     { 
      "tee_id": 5, 
      "tee_name": "White", 
      "tee_color": "#FFFFFF" 
     }, 
     { 
      "tee_id": 1, 
      "tee_name": "Black", 
      "tee_color": "#000000" 
     }, 
     { 
      "tee_id": 3, 
      "tee_name": "Red", 
      "tee_color": "#FF0000" 
     } 
     ], 
     "Ladies": [ 
     { 
      "tee_id": 2, 
      "tee_name": "Blue", 
      "tee_color": "#000099" 
     }, 
     { 
      "tee_id": 4, 
      "tee_name": "Yellow", 
      "tee_color": "#FFFF00" 
     }, 
     { 
      "tee_id": 5, 
      "tee_name": "White", 
      "tee_color": "#FFFFFF" 
     }, 
     { 
      "tee_id": 1, 
      "tee_name": "Black", 
      "tee_color": "#000000" 
     }, 
     { 
      "tee_id": 3, 
      "tee_name": "Red", 
      "tee_color": "#FF0000" 
     } 
     ], 
     "Junior": [ 
     { 
      "tee_id": 2, 
      "tee_name": "Blue", 
      "tee_color": "#000099" 
     }, 
     { 
      "tee_id": 4, 
      "tee_name": "Yellow", 
      "tee_color": "#FFFF00" 
     }, 
     { 
      "tee_id": 5, 
      "tee_name": "White", 
      "tee_color": "#FFFFFF" 
     }, 
     { 
      "tee_id": 1, 
      "tee_name": "Black", 
      "tee_color": "#000000" 
     }, 
     { 
      "tee_id": 3, 
      "tee_name": "Red", 
      "tee_color": "#FF0000" 
     } 
     ] 
    }, 
    "message": "Golf Course Tee List." 
    } 
} 
+0

JSONを使用する場合、オブジェクトの位置は保持されます。 JSONObject myObj =新しいJSONObject( "{"出力 ":" etcetcetc "}"); – Carsten

+0

JSONObject jsonObject =レスポンス.getJSONObject( "出力"); JSONObject jsonObject1 = jsonObject.getJSONObject( "GolfCourseTee"); JSONArray jsonArray = jsonObject1.getJSONArray( "Men"); for(int i = 0; i Vishal

+0

データを格納するために 'POJO'を使用します。 – Arshak

答えて

1

Gsonは動作し、JSONの順序を維持します。

まず、私はクラスにJSONを保存し、そのようにそれを使用:

public class TestJSON { 

    public static String TEST_JSON_2 = "{\"output\":{\"status\":\"1\",\"GolfCourseTee\":{\"Men\":[{\"tee_id\":2,\"tee_name\":\"Blue\",\"tee_color\":\"#000099\"},{\"tee_id\":4,\"tee_name\":\"Yellow\",\"tee_color\":\"#FFFF00\"},{\"tee_id\":5,\"tee_name\":\"White\",\"tee_color\":\"#FFFFFF\"},{\"tee_id\":1,\"tee_name\":\"Black\",\"tee_color\":\"#000000\"},{\"tee_id\":3,\"tee_name\":\"Red\",\"tee_color\":\"#FF0000\"}],\"Ladies\":[{\"tee_id\":2,\"tee_name\":\"Blue\",\"tee_color\":\"#000099\"},{\"tee_id\":4,\"tee_name\":\"Yellow\",\"tee_color\":\"#FFFF00\"},{\"tee_id\":5,\"tee_name\":\"White\",\"tee_color\":\"#FFFFFF\"},{\"tee_id\":1,\"tee_name\":\"Black\",\"tee_color\":\"#000000\"},{\"tee_id\":3,\"tee_name\":\"Red\",\"tee_color\":\"#FF0000\"}],\"Junior\":[{\"tee_id\":2,\"tee_name\":\"Blue\",\"tee_color\":\"#000099\"},{\"tee_id\":4,\"tee_name\":\"Yellow\",\"tee_color\":\"#FFFF00\"},{\"tee_id\":5,\"tee_name\":\"White\",\"tee_color\":\"#FFFFFF\"},{\"tee_id\":1,\"tee_name\":\"Black\",\"tee_color\":\"#000000\"},{\"tee_id\":3,\"tee_name\":\"Red\",\"tee_color\":\"#FF0000\"}]},\"message\":\"Golf Course Tee List.\"}}"; 
} 

その後、私は、それぞれのモデルにJSONをマッピングされた:

public class Data { 

     @SerializedName("output") 
     Output output; 

     public Output getOutput() {return output;} 
    } 

    public class Output { 

     @SerializedName("status") 
     String status; 

     @SerializedName("GolfCourseTee") 
     GolfCourseTee GolfCourseTee; 

     @SerializedName("message") 
     String message; 

     public com.pearson.android.test.GolfCourseTee getGolfCourseTee() {return GolfCourseTee;} 

     public String getMessage() {return message;} 

     public String getStatus() {return status;} 
    } 

    public class GolfCourseTee { 

     @SerializedName("Men") 
     List<Member> Men; 

     @SerializedName("Ladies") 
     List<Member> Ladies; 

     @SerializedName("Junior") 
     List<Member> Junior; 

     List<Member> cumulativeList; 

     public List<Member> getAllMembers(){ 

      if(cumulativeList == null){ 
       cumulativeList = new ArrayList<Member>(); 
       cumulativeList.addAll(Men); 
       cumulativeList.addAll(Ladies); 
       cumulativeList.addAll(Junior); 
      } 
      return cumulativeList; 
     } 

     public List<Member> getJunior() {return Junior;} 

     public List<Member> getLadies() {return Ladies;} 

     public List<Member> getMen() {return Men;} 
    } 

    public class Member { 

     @SerializedName("tee_id") 
     int tee_id; 

     @SerializedName("tee_name") 
     String tee_name; 

     @SerializedName("tee_color") 
     String tee_color; 

     public int getTee_id() {return tee_id;} 

     public String getTee_color() {return tee_color;} 

     public String getTee_name() {return tee_name;} 
    } 

そして、ここでは、私の活動でありますGsonを使用します。

public class TestActivity extends AppCompatActivity { 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_test); 

      Gson gson = new Gson(); 

      try{ 

       Data data = gson.fromJson(TestJSON.TEST_JSON_2,Data.class); 

       List<Member> mensList = data.getOutput().getGolfCourseTee().getMen(); 
       List<Member> ladiesList = data.getOutput().getGolfCourseTee().getLadies(); 
       List<Member> juniorsList = data.getOutput().getGolfCourseTee().getJunior(); 
       List<Member> cumulativeList = data.getOutput().getGolfCourseTee().getAllMembers(); 

       for(Member member : mensList) 
        Log.v("men","Id: " + member.getTee_id() + " name: " + member.getTee_name() + " color: " + member.getTee_color()); 

       for(Member member : ladiesList) 
        Log.v("ladies","Id: " + member.getTee_id() + " name: " + member.getTee_name() + " color: " + member.getTee_color()); 

       for(Member member : juniorsList) 
        Log.v("juniors","Id: " + member.getTee_id() + " name: " + member.getTee_name() + " color: " + member.getTee_color()); 

       for(Member member : cumulativeList){ 
        Log.v("member","Id: " + member.getTee_id() + " name: " + member.getTee_name() + " color: " + member.getTee_color()); 
       } 

      }catch(Exception exception){ 
       exception.printStackTrace(); 
      } 
     } 
    } 

そして、ここではLogcatは次のとおりです。

07-27 19:53:42.204 16850-16850/com.android.test V/men: Id: 2 name:Blue color:#000099 
07-27 19:53:42.204 16850-16850/com.android.test V/men: Id: 4 name:Yellow color:#FFFF00 
07-27 19:53:42.204 16850-16850/com.android.test V/men: Id: 5 name:White color:#FFFFFF 
07-27 19:53:42.204 16850-16850/com.android.test V/men: Id: 1 name:Black color:#000000 
07-27 19:53:42.204 16850-16850/com.android.test V/men: Id: 3 name:Red color:#FF0000 
07-27 19:53:42.204 16850-16850/com.android.test V/ladies: Id: 2 name:Blue color:#000099 
07-27 19:53:42.204 16850-16850/com.android.test V/ladies: Id: 4 name:Yellow color:#FFFF00 
07-27 19:53:42.204 16850-16850/com.android.test V/ladies: Id: 5 name:White color:#FFFFFF 
07-27 19:53:42.204 16850-16850/com.android.test V/ladies: Id: 1 name:Black color:#000000 
07-27 19:53:42.204 16850-16850/com.android.test V/ladies: Id: 3 name:Red color:#FF0000 
07-27 19:53:42.205 16850-16850/com.android.test V/juniors: Id: 2 name:Blue color:#000099 
07-27 19:53:42.205 16850-16850/com.android.test V/juniors: Id: 4 name:Yellow color:#FFFF00 
07-27 19:53:42.205 16850-16850/com.android.test V/juniors: Id: 5 name:White color:#FFFFFF 
07-27 19:53:42.205 16850-16850/com.android.test V/juniors: Id: 1 name:Black color:#000000 
07-27 19:53:42.205 16850-16850/com.android.test V/juniors: Id: 3 name:Red color:#FF0000 

そしてメンバーのための追加のログ:

07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 2 name: Blue color: #000099 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 4 name: Yellow color: #FFFF00 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 5 name: White color: #FFFFFF 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 1 name: Black color: #000000 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 3 name: Red color: #FF0000 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 2 name: Blue color: #000099 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 4 name: Yellow color: #FFFF00 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 5 name: White color: #FFFFFF 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 1 name: Black color: #000000 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 3 name: Red color: #FF0000 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 2 name: Blue color: #000099 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 4 name: Yellow color: #FFFF00 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 5 name: White color: #FFFFFF 
07-28 13:53:10.780 6680-6680/com,android.test V/member: Id: 1 name: Black color: #000000 
07-28 13:53:10.780 6680-6680/com.android.test V/member: Id: 3 name: Red color: #FF0000 

あなたは順序がちょうどオリジナルのJSONのようである見ることができるように。お役に立てれば。

編集:更新されたモデルクラスGolfCourseTeeは、TestActivityでも使用される累積リストを返します。追加されたリストに対応するログも更新されます。 Btwこれは他の方法で解決することもできますが、ソリューションは1つのアプローチしか示していません。

+0

また、このソリューションを使用するには、プロジェクトにGsonを含める必要があります。 http://search.maven.org/#artifactdetails%7Ccom.google.code.gson%7Cgson%7C2.7%7Cより詳しくはこちらからhttp://repo1.maven.org /maven2/com/google/code/gson/gson/2.7/ – user1841702

+0

しかし、私はすでにjsonの応答と解析のためにVolleyクラスを使用しています。 – Vishal

+0

gsonでボレーを使用できますが、問題はありません。 – user1841702

1
JsonObject jObject = new JsonObject(responseString); 
JsonObject outputObject = jObject.get("output"); 
JsonObject golfObject = outputObject.get("GolfCourseTee"); 
ArrayList<GolfModel> golfList = new ArrayList<>(); 
JsonArray manArray = golfObject.getJsonArray("Men"); 
for(int i=0; i<manArray.length ;) 
{ 
    String id = manArray.get(i).get("tee_id"); 
    String name = manArray.get(i).get("tee_name"); 
    String color = manArray.get(i).get("tee_color"); 
    GolfModel g = new GolfModel(id, name, color); 
    golfList.add(g); 
} 
JsonArray ladiesArray = golfObject.getJsonArray("Ladies"); 
for(int i=0; i<ladiesArray.length ;) 
{ 
    String id = ladiesArray.get(i).get("tee_id"); 
    String name = ladiesArray.get(i).get("tee_name"); 
    String color = ladiesArray.get(i).get("tee_color"); 
    GolfModel g = new GolfModel(id, name, color); 
    golfList.add(g); 
} 
JsonArray juniorArray = golfObject.getJsonArray("Junior"); 
for(int i=0; i<juniorArray.length ;) 
{ 
    String id = juniorArray.get(i).get("tee_id"); 
    String name = juniorArray.get(i).get("tee_name"); 
    String color = juniorArray.get(i).get("tee_color"); 
    GolfModel g = new GolfModel(id, name, color); 
    golfList.add(g); 
} 
+0

***オプション2 *** gsonライブラリを使用してjson出力を処理できます。 これらのリンクを使用すると便利です: https://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html https://kylewbanks.com/blog/Tutorial-Android-Parsing -JSON-GSON https://guides.codepath.com/android/Leveraging-the-Gson-Library –

+0

私は同じ構文解析です,,,, manArray.get(i).get( "tee_id"); – Vishal

+0

あなたは直面している問題は何ですか? –

関連する問題