Java 如何像Android中的响应一样设置数组对象的顺序?
我正在使用volley类进行数组解析,我得到了以下响应,但是,我希望以相同的顺序显示响应中的数组项,但是在解析之后,我的数组项顺序不同,并且显示随机顺序Java 如何像Android中的响应一样设置数组对象的顺序?,java,android,arrays,json,parsing,Java,Android,Arrays,Json,Parsing,我正在使用volley类进行数组解析,我得到了以下响应,但是,我希望以相同的顺序显示响应中的数组项,但是在解析之后,我的数组项顺序不同,并且显示随机顺序 { "output": { "status": "1", "GolfCourseTee": { "Men": [ { "tee_id": 2, "tee_name": "Blue", "tee_color": "#000099"
{
"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."
}
}
JsonObject jObject=新的JsonObject(responseString);
JsonObject outputObject=jObject.get(“输出”);
JsonObject golfObject=outputObject.get(“GolfCourseTee”);
ArrayList golfList=新的ArrayList();
JsonArray manArray=golfObject.getJsonArray(“男人”);
for(int i=0;iJsonObject jObject=newjsonobject(responseString);
JsonObject outputObject=jObject.get(“输出”);
JsonObject golfObject=outputObject.get(“GolfCourseTee”);
ArrayList golfList=新的ArrayList();
JsonArray manArray=golfObject.getJsonArray(“男人”);
对于(inti=0;iGson,它工作并维护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;}
}
以及成员的其他日志:
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,以及与添加的列表相对应的日志。顺便说一句,这也可以通过其他方式解决,解决方案只演示了一种方法。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;}
}
以及成员的其他日志:
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中也使用的累积列表,以及与添加的列表相对应的日志。顺便说一句,这也可以通过其他方式解决,解决方案只演示了一种方法。使用JSON时,对象的位置会被保留。JSONObject MyObject=new JSONObject(“{”output:“etcetc”})JSONObject JSONObject=response.getJSONObject(“输出”);JSONObject jsonObject1=JSONObject.getJSONObject(“GolfCourseTee”);JSONArray JSONArray=jsonObject1.getJSONArray(“人”);for(int i=0;iPOJO
来存储数据。请您也展示一下您是如何读取/解析JSON对象以显示输出的?Gson确实保持了顺序,下面的例子。使用JSON时,对象的位置会被保留。JSONObject MyObject=new JSONObject(“{”output:“etcetc”}”)JSONObject JSONObject=response.getJSONObject(“输出”);JSONObject jsonObject1=JSONObject.getJSONObject(“GolfCourseTee”);JSONArray JSONArray=jsonObject1.getJSONArray(“人”);for(int i=0;iPOJO
来存储数据。您能不能也展示一下您是如何读取/解析JSON对象来显示输出的?Gson确实维护了顺序,下面的例子。选项2您可以使用Gson库来处理JSON输出;这些链接可能对您很有用:那么您面临什么问题呢?谢谢老兄,Y我们的代码棒极了。非常感谢您的回复。选项2您可以使用gson库来处理json输出;这些链接可能对您有用:那么您面临的问题是什么?谢谢,伙计,您的代码棒极了。非常感谢您的回复。同样,为了使此解决方案能够工作,您需要在项目中包含gson。您可以获得jar from here:或者更具体地说,here:但是我已经使用了用于json响应和解析的Volley类。您可以将Volley与gson一起使用,这不是问题。您的Volley单个实例将返回一个json,gson接受字符串作为输入,您可以将返回的json从Volley的onResponse方法传递到gson的fromJson方法,如:fromJson(receivedJSON.toString,Data.class);如果可行,请您接受答案,询问者还可以获得两点好处。此外,要使此解决方案起作用,您需要在项目中包含Gson。您可以从这里获得jar:或者更具体地说,在这里:但我已经使用Volley类来进行json响应和解析。您可以将Volley与Gson一起使用,不是吗这不是问题。您的Volley单实例将返回一个JSON,gson接受字符串作为输入,您可以将返回的JSON从Volley的onResponse方法传递到gson的fromJson方法,如下所示:fromJson(receivedJSON.toString,Data.class);如果有效,请您接受答案,询问者获得几分还有额外的好处。