Java android中的Gson属性顺序
我已经集成了Gson来创建用于android应用程序请求的json 这是我的模型课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
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;
}
}
另见:
Gson gson = new GsonBuilder().registerTypeAdapter(TwitterUser.class, new TwitterUserSerializer()).excludeFieldsWithoutExposeAnnotation().create();
String json = gson.toJson(twitterUser);