繁体   English   中英

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

[英]How to use different field names based on the app version in Gson?

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

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

据我所知,你不能结合@Since@SerializedName来动态更改字段名称。 另一种方法是使用带有变量ver FieldNamingStrategy来确定应该使用哪个名称进行序列化。

下面的例子显示,如果有一个字段中指定user在你的POJO,那么你就可以改变它的名称不同的预先定义的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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM