プロジェクトでは、多くの場合、要求時間形式と応答時間形式で処理されるデータがあります。これは、便宜上の要約です。日付に加えて、他のタイプも独自のシリアル化ルールを拡張できます。
1.インストールと変更に戻る:JsonSerializer
カスタムの戻り時間の形式は、タイムスタンプLongまたは文字列です:yyyy-MM-dd HH:mm:ss
対応するエンティティクラスフィールドに注釈を付けます。 @JsonSerialize(using = DateJsonSerialize.class)
/**
* 时间处理: 返回时间戳
* <P> 字段上添加 @JsonSerialize(using = DateJsonSerialize.class) 注解 </P>
* @author wangsong
* @mail [email protected]
* @date 2020/11/21 0021 14:19
* @version 1.0.0
*/
public class DateJsonSerialize extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value != null) {
// value 为时间时,返回时间戳,字段上添加 @JsonSerialize(using = DateJsonSerialize.class) 注解
if (value.getClass().isAssignableFrom(Date.class)) {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String format = sdf.format((Date) value);
// gen.writeString(format);
String time = ((Date) value).getTime() + "";
gen.writeString(time);
}
}
}
}
2つ目は、変換を受信します。
カスタム受信時間の形式は、タイムスタンプLongまたは文字列です。yyyy-MM-ddHH:mm:ssは、エンティティタイプに対応するデータに変換されます。
対応するエンティティクラスフィールドまたはsetメソッドにコメントを追加します。 @JsonDeserialize(using = DateJsonDeserialize.class)
public class DateJsonDeserialize extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
String text = p.getText();
if(StringUtils.isBlank(text)){
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse(text);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}