@Override protected LocalDateSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf, JsonFormat.Shape shape) { return new LocalDateSerializer(this, useTimestamp, dtf, shape); }
@Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException { SerializerProvider provider = visitor.getProvider(); boolean useTimestamp = (provider != null) && useTimestamp(provider); if (useTimestamp) { _acceptTimestampVisitor(visitor, typeHint); } else { JsonStringFormatVisitor v2 = visitor.expectStringFormat(typeHint); if (v2 != null) { v2.format(JsonValueFormat.DATE); } } }
@Override public void serialize(LocalDate date, JsonGenerator g, SerializerProvider provider) throws IOException { if (useTimestamp(provider)) { if (_shape == JsonFormat.Shape.NUMBER_INT) { g.writeNumber(date.toEpochDay()); } else { g.writeStartArray(); _serializeAsArrayContents(date, g, provider); g.writeEndArray(); } } else { g.writeString((_formatter == null) ? date.toString() : date.format(_formatter)); } }
@Override public void serializeWithType(LocalDate value, JsonGenerator g, SerializerProvider provider, TypeSerializer typeSer) throws IOException { WritableTypeId typeIdDef = typeSer.writeTypePrefix(g, typeSer.typeId(value, serializationShape(provider))); // need to write out to avoid double-writing array markers switch (typeIdDef.valueShape) { case START_ARRAY: _serializeAsArrayContents(value, g, provider); break; case VALUE_NUMBER_INT: g.writeNumber(value.toEpochDay()); break; default: g.writeString((_formatter == null) ? value.toString() : value.format(_formatter)); } typeSer.writeTypeSuffix(g, typeIdDef); }
@Override // since 2.9 protected JsonToken serializationShape(SerializerProvider provider) { if (useTimestamp(provider)) { if (_shape == JsonFormat.Shape.NUMBER_INT) { return JsonToken.VALUE_NUMBER_INT; } return JsonToken.START_ARRAY; } return JsonToken.VALUE_STRING; } }
@Override public void serialize(LocalDate date, JsonGenerator generator, SerializerProvider provider) throws IOException { if (useTimestamp(provider)) { generator.writeStartArray(); generator.writeNumber(date.getYear()); generator.writeNumber(date.getMonthValue()); generator.writeNumber(date.getDayOfMonth()); generator.writeEndArray(); } else { String str = (_formatter == null) ? date.toString() : date.format(_formatter); generator.writeString(str); } }
@Override public void customize(Jackson2ObjectMapperBuilder builder) { builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); builder.serializerByType(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); builder.serializerByType(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); builder.deserializerByType(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); builder.deserializerByType(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); builder.serializationInclusion(JsonInclude.Include.NON_NULL); builder.failOnUnknownProperties(false); builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); } };
@Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException { SerializerProvider provider = visitor.getProvider(); boolean useTimestamp = (provider != null) && useTimestamp(provider); if (useTimestamp) { _acceptTimestampVisitor(visitor, typeHint); } else { JsonStringFormatVisitor v2 = visitor.expectStringFormat(typeHint); if (v2 != null) { v2.format(JsonValueFormat.DATE); } } } }
@Override protected LocalDateSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf) { return new LocalDateSerializer(this, useTimestamp, dtf); }
/** * 注册模块 * * @param objectMapper * @return */ private static ObjectMapper registerModule(ObjectMapper objectMapper) { SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); simpleModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); simpleModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); objectMapper.registerModule(new JavaTimeModule()); objectMapper.registerModule(simpleModule); return objectMapper; }
public BladeJavaTimeModule() { super(PackageVersion.VERSION); this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeUtil.DATETIME_FORMAT)); this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeUtil.DATE_FORMAT)); this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeUtil.TIME_FORMAT)); this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeUtil.DATETIME_FORMAT)); this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeUtil.DATE_FORMAT)); this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeUtil.TIME_FORMAT)); }