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つのアプローチしか示していません。
JSONを使用する場合、オブジェクトの位置は保持されます。 JSONObject myObj =新しいJSONObject( "{"出力 ":" etcetcetc "}"); – Carsten
JSONObject jsonObject =レスポンス.getJSONObject( "出力"); JSONObject jsonObject1 = jsonObject.getJSONObject( "GolfCourseTee"); JSONArray jsonArray = jsonObject1.getJSONArray( "Men"); for(int i = 0; i
Vishal
データを格納するために 'POJO'を使用します。 – Arshak