обозначение Gson для форматирования даты в атрибуте DTO - PullRequest
0 голосов
/ 25 октября 2018

У меня есть следующий код с Джексоном:

public class Header implements Serializable {

    @JsonProperty("numeroUnico")
    private Integer numeroCliente;

    @JsonProperty("oficina")
    private Integer oficina;

    @JsonProperty("fecha")
    @JsonSerialize(using = CustomDateSerializer.class)
    private Date fechaInscripcion;

}

это мой класс "CustomDateSerializer.class"

public class CustomDateSerializer extends StdSerializer<Date> {

    private SimpleDateFormat formatter 
      = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

    public CustomDateSerializer() {
        this(null);
    }

    public CustomDateSerializer(Class t) {
        super(t);
    }

    @Override
    public void serialize (Date value, JsonGenerator gen, SerializerProvider arg2)
      throws IOException, JsonProcessingException {
        gen.writeString(formatter.format(value));
    }
}

Они попросили меня перенести все реализации Джексона в Gson,Принимая во внимание, что запись в Джексоне @JsonProperty имеет эквивалентность в Gson, которая является @SerializedName.Но для обозначения в Джексоне:

@JsonSerialize (using = CustomDateSerializer.class)

Что эквивалентно Гсону?если нет, то так и должно быть для атрибутов типа Date в моем DTO.

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, что наиболее близким и, вероятно, единственным совпадением является @TypeAdapter.Однако вам необходимо ввести код JsonSerializer<T> или TypeAdapter<T> для использования с этой аннотацией.

Например, как сделать что-то вроде CustomDateSerializer см.принятый ответ на этот вопрос .

Или, может быть, вы можете обернуть существующий CustomDateSerializer с помощью Gson TypeAdapter<Date> и использовать его в аннотации.

...