簡體   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