【发布时间】:2015-01-30 14:27:00
【问题描述】:
我需要为班级的日期序列化设置格式。 我有没有@JsonFormat 的Jackson 版本。这就是我编写自定义类的原因:
public class CDJsonDateSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String dateString = dateFormat.format(date);
jsonGenerator.writeString(dateString);
}
}
并使用它:
@JsonSerialize(using = CDJsonDateSerializer.class)
private Date startDate;
但是,我有另一个具有不同日期格式的字段,我不想创建另一个用于序列化的类。我可以将所有需要的格式(如常量)添加到 CDJsonDateSerializer 类并使用注释 @JsonSerialize 设置所需的格式吗?
像这样的:
@JsonSerialize(using = CDJsonDateSerializer.class, CDJsonDateSerializer.FIRST_FORMAT).
在下面的答案之后:
经过一些更正后它可以工作。我已经改变了在 createContextual 方法中获取注释的方式:
@Override
public JsonSerializer createContextual(SerializationConfig serializationConfig, BeanProperty beanProperty) {
return new CustomDateSerializer(beanProperty.getAnnotation(JsonDateFormat.class).value());
}
我已将 @JacksonAnnotation 添加到我创建的新注释 JsonDateFormat:
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonDateFormat {
String value();
}
【问题讨论】:
标签: java json serialization jackson