当前位置: 首页 > 知识库问答 >
问题:

如何根据Gson中的应用程序版本使用不同的字段名?

阎兴为
2023-03-14

我有一个使用Java和Gson运行的rest API,并有一项任务来标准化字段的名称。不幸的是,它们是用我的母语创建的,现在需要改成英语。我在想,我可以支持旧版本,传递旧的字段名。

是否可以将@Since注释与@SerializedName一起使用?或者根据版本动态更改字段名的任何解决方案

共有1个答案

朱伯寅
2023-03-14

据我所知,您不能将@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)