我有一个使用Java和Gson运行的rest API,并有一项任务来标准化字段的名称。不幸的是,它们是用我的母语创建的,现在需要改成英语。我在想,我可以支持旧版本,传递旧的字段名。
是否可以将@Since注释与@SerializedName一起使用?或者根据版本动态更改字段名的任何解决方案?
据我所知,您不能将@Since
和@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();
我正在努力用本地化反序列化世界天气在线API结果。 是否有更好、更简单的解决方案,只为lang对象编写一个自定义反序列化器,并允许GSON自动反序列化其余数据?
我有两个Pydantic模型(< code>var1和< code>var2)。< code>PostExample方法的输入可以接收第一个模型或第二个模型的数据。使用< code>Union有助于解决这个问题,但是在验证期间,它会对第一个和第二个模型都抛出错误。 如何使其在填写字段时发生错误时,仅为某个模型返回验证器错误,而不是同时为两个模型返回?(如果有帮助,可以通过字段A的长度来区分模型)。
我正在尝试使用elasticsearch搜索产品。例如,如果产品是汽车,它将有一些字段,如“颜色”,“品牌”,“型号”,“公里”,……如果它是衣服,它将只有“颜色”,“尺寸”,……我想在弹性索引所有这些信息,以便能够搜索公里在aaa公里和bbb公里之间的汽车,和/或xxxx型号,相同的衣服或任何其他产品。 如何在elasticsearch中创建这样的字段?我希望所有的产品在相同的索引,这样用户可以
问题内容: 如何在网络驱动程序中设置Firefox版本?我只想使用其他版本的Firefox。 就像其他版本19、20、21 … 请提供一个通用解决方案,该解决方案也对其他浏览器有所帮助。 问题答案: 您必须在系统上安装所有版本。然后,您可以使用System属性来定义Firefox的路径。请注意,由于路径是通过System属性设置的,因此您将无法在同一Java进程中运行两个不同的Firefox。 此
null 警告:与依赖项“com.android.support:support-annotations”冲突。应用程序(22.0.0)和测试应用程序(21.0.3)的解析版本不同。 Gradle本身更宽容,但Android工作室,就没那么宽容了。 我没有用21.0.3声明的依赖项...是不是其中一个依赖库使用21.0.3而谷歌忘了用批处理的其余部分更新它? null null null
问题内容: 我已经安装了Java6和7,并使用eclipse编写了一个简单的jdbc应用程序。我在lib文件夹中同时有sqljdbc4.jar和sqljdbc.jar。我收到此消息… 2013年12月18日9:29:51 com.microsoft.sqlserver.jdbc.SQLServerConnection 严重:该驱动程序不支持Java Runtime Environment(JRE)