Java 如何根据Gson中的应用程序版本使用不同的字段名?
我有一个使用Java和Gson运行的RESTAPI,并且有一项任务来标准化字段的名称。不幸的是,它们是用我的母语创建的,现在需要改成英语。我在想,我可以支持旧版本,传递旧的字段名Java 如何根据Gson中的应用程序版本使用不同的字段名?,java,api,gson,versioning,Java,Api,Gson,Versioning,我有一个使用Java和Gson运行的RESTAPI,并且有一项任务来标准化字段的名称。不幸的是,它们是用我的母语创建的,现在需要改成英语。我在想,我可以支持旧版本,传递旧的字段名 是否可以将@Since注释与@SerializedName一起使用?或者根据版本动态更改字段名的任何解决方案?据我所知,您不能将@与@SerializedName组合以动态更改字段名。另一种方法是将FieldNamingStrategy与变量ver一起使用,以确定应该使用哪个名称进行序列化 下面的示例显示,如果POJO
是否可以将@Since注释与@SerializedName一起使用?或者根据版本动态更改字段名的任何解决方案?据我所知,您不能将
@与@SerializedName
组合以动态更改字段名。另一种方法是将FieldNamingStrategy
与变量ver
一起使用,以确定应该使用哪个名称进行序列化
下面的示例显示,如果POJO中有一个名为user
的字段,则可以使用不同的预定义ver
(例如0.1或0.2)更改其名称以进行序列化
代码片段
double ver = 0.1;
Gson gson = new GsonBuilder()
.setFieldNamingStrategy(new FieldNamingStrategy() {
@Override
public String translateName(Field field) {
if ("user".equals(field.getName())) {
if (ver == 0.1) {
return "username";
} else if (ver == 0.2) {
return "user_name";
} else {
return field.getName();
}
} else {
return field.getName();
}
}
})
.create();
也许会有帮助?在@SerializedName
注释中同时指定旧名称和新名称,这很好,但是我如何控制版本中基于哪个名称?也许您想分享您的问题的一个最简单的具体示例?