属性DTO中格式符日期的Gson表示法

时间:2018-10-25 14:26:55

标签: java jackson gson dto serializer

我在Jackson上有以下代码:

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));
    }
}

他们要求我将所有Jackson的实现迁移到Gson。 考虑到Jackson @JsonProperty中的表示法在Gson中的等效项是@SerializedName。 但是对于杰克逊(Jackson)中的注释:

@JsonSerialize (using = CustomDateSerializer.class)

对Gson来说等效吗?如果不是,则应该是DTO中Date类型的属性的实现。

1 个答案:

答案 0 :(得分:0)

我认为最接近且可能唯一的匹配是@TypeAdapter。但是,您需要编码JsonSerializer<T>TypeAdapter<T>以便与该注释一起使用。

例如,如何制作类似<ul> <li>some content</li> <li>some content</li> <li>some content</li> <li>some content</li> <li>some content</li> <li>some content</li> etc. </ul> 的东西,请参见this question的可接受答案。

或者也许您可以将现有的CustomDateSerializer与Gson CustomDateSerializer一起包装,并在注释中使用它。