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

问题描述 投票:0回答:1

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

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

java api gson versioning
1个回答
0
投票

据我所知,您不能组合@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();
© www.soinside.com 2019 - 2024. All rights reserved.