Skip to content

Instantly share code, notes, and snippets.

@circlee
Created August 9, 2018 04:45
Show Gist options
  • Save circlee/6c772cafd306c000307d3cc29e644bb2 to your computer and use it in GitHub Desktop.
Save circlee/6c772cafd306c000307d3cc29e644bb2 to your computer and use it in GitHub Desktop.
import lombok.AllArgsConstructor;
import lombok.Data;
@AllArgsConstructor
public @Data class LocalDateTest {
public String name = "";
public LocalDateTimeYMD timeYmd;
}
import java.time.LocalDateTime;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.experimental.Delegate;
@JsonSerialize(using = LocalDateTimeYMDSerializer.class)
@JsonDeserialize(using = LocalDateTimeYMDDeSerializer.class)
public class LocalDateTimeYMD {
@Delegate LocalDateTime date;
public LocalDateTimeYMD(LocalDateTime dateTime){
this.date = dateTime;
}
public LocalDateTime getDate(){
return this.date;
}
}
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
public class LocalDateTimeYMDDeSerializer extends JsonDeserializer<LocalDateTimeYMD> {
@Override
public LocalDateTimeYMD deserialize(JsonParser p,
DeserializationContext ctxt)
throws IOException, JsonProcessingException {
String text = p.getText();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return new LocalDateTimeYMD(LocalDateTime.parse(text, formatter));
}
}
import java.io.IOException;
import java.time.format.DateTimeFormatter;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class LocalDateTimeYMDSerializer extends JsonSerializer<LocalDateTimeYMD> {
@Override
public void serialize(LocalDateTimeYMD value, JsonGenerator gen,
SerializerProvider serializers)
throws IOException, JsonProcessingException {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
gen.writeString(value.getDate().format(formatter));
}
}
public class Test {
public static void main(String ... args) throws IOException {
ObjectMapper om = new ObjectMapper();
LocalDateTimeYMD localDateYmd = new LocalDateTimeYMD(LocalDateTime.now());
// java object
LocalDateTest localDateTest1 = new LocalDateTest("test", localDateYmd);
// serialized json str
String serializedJsonStr = om.writeValueAsString(localDateTest1);
System.out.println(serializedJsonStr);
// deserialized java object
LocalDateTest localDateTest2 = om.readValue(serializedJsonStr, LocalDateTest.class);
System.out.println(localDateTest1.getTimeYmd().getDate());
System.out.println(localDateTest2.getTimeYmd().getDate());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment