[英]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.