Использование @SerializedName ("") в методах - PullRequest
0 голосов
/ 28 марта 2020

Согласно документации:

@Target({ElementType.FIELD, ElementType.METHOD})
public @interface SerializedName {

Аннотация SerializedName предназначена для использования с полями или методами ... но я никогда не видел пример того, как использовать его с методами .

Но знайте, у меня есть ситуация, когда это было бы очень полезно

У меня есть BasicReponse и несколько других ответов, расширяющих его.
Я хотел бы объявить основной объект в этом ответе и переименуйте его в соответствии со специализированным ответом

ex:

public class BasicResponse<T> {


    protected T data;

    @SerializedName("status")
    protected String status;
    //other fields
}

public class ChallengeResponse extends BasicResponse<StepData> {


    @SerializedName("step_name")
    private String stepName;
    @SerializedName("user_id")
    private long userId;
    @SerializedName("nonce_code")
    private String nounce;

    @SerializedName("action")
    private String action;
}

Поэтому я хотел бы, чтобы поле data из basicResponse получило элемент json с именем step_data типа StepData case я десериализую в ChallengeResponse.

как это сделать?
могу ли я переопределить аннотацию из суперкласса? если бы я мог использовать аннотацию для методов get / set, было бы очень просто переопределить их для каждого специализированного ответа.

Кто-нибудь знает простой способ решения проблемы?

...