Java android中的Gson属性顺序

Java android中的Gson属性顺序,java,android,gson,Java,Android,Gson,我已经集成了Gson来创建用于android应用程序请求的json 这是我的模型课 public class TwitterUser { @Expose public String gid; public String icon_url; public Boolean is_app_user; @Expose public String displayName; public TwitterUser(String l, String i, String url, Boolean app_us

我已经集成了Gson来创建用于android应用程序请求的json

这是我的模型课

public class TwitterUser {

@Expose
public String gid;
public String icon_url;
public Boolean is_app_user;
@Expose
public String displayName;

public TwitterUser(String l, String i, String url, Boolean app_user) {
    gid = i;
    displayName = l;
    icon_url = url;
    is_app_user = app_user;
}

public TwitterUser(String l, String i) {
    gid = i;
    displayName = l;
}

public String getGid() {
    return gid;
}

public void setGid(String gid) {
    this.gid = gid;
}

public String getIcon_url() {
    return icon_url;
}

public void setIcon_url(String icon_url) {
    this.icon_url = icon_url;
}

public Boolean getIs_app_user() {
    return is_app_user;
}

public void setIs_app_user(Boolean is_app_user) {
    this.is_app_user = is_app_user;
}

public String getDisplayName() {
    return displayName;
}

public void setDisplayName(String displayName) {
    this.displayName = displayName;
}
下面是我如何创建json请求的

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();              
gson.toJson(twitterUser));
但当我向服务器发送请求时,订单将被拒绝。我必须更改请求的字段顺序才能停留:

  • gid
  • displayName

  • 但是gson创建了另一种方法,是否有任何方法可以实现这一点。

    gson不支持开箱即用的属性顺序定义,但还有其他库支持Jackson允许定义此项,例如

    但Gson当然有自己的方式,所以您可以通过创建自己的Json序列化程序来实现:

    public class TwitterUserSerializer implements JsonSerializer<TwitterUser> {
    
        @Override
        public JsonElement serialize(TwitterUser twitterUser, Type type, JsonSerializationContext context) {
            JsonObject object = new JsonObject();
            object.add("gid", context.serialize(twitterUser.getGid());
            object.add("displayName", context.serialize(twitterUser.getDisplayName());
            // ...
            return object;
        }
    }
    
    另见:

    添加了一个应该涵盖您的问题的答案-您需要额外的帮助吗?嘿,G先生,我看到这里没有回应:)但是您仍然需要更多的帮助来解决这个问题吗?
    Gson gson = new GsonBuilder().registerTypeAdapter(TwitterUser.class, new TwitterUserSerializer()).excludeFieldsWithoutExposeAnnotation().create();
    String json = gson.toJson(twitterUser);