Java 如何像Android中的响应一样设置数组对象的顺序?

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"

我正在使用volley类进行数组解析,我得到了以下响应,但是,我希望以相同的顺序显示响应中的数组项,但是在解析之后,我的数组项顺序不同,并且显示随机顺序

{
  "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;i
JsonObject 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);如果有效,请您接受答案,询问者获得几分还有额外的好处。