Tanggal Format Saat Mengembalikan Tanggal JSON
Langkah 1: Buat kelas CustomObjectMapper
/*** Selesaikan masalah yang ketika SpringMVC menggunakan @ResponseBody untuk mengembalikan JSON, format tanggal ditampilkan sebagai cap waktu secara default. Perlu menggunakan */ @component ("CustomObjectMapper") Public Class CustomObjectMapper memperluas ObjectMapper {public CustomObjectMapper () {CustomSerializerFactory factory = customeSerializerFactory (); factory.addGenericMapping(Date.class, new JsonSerializer<Date>() { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsongenerator.writeString (sdf.format (value)); this.setserializerFactory (pabrik); }}Langkah 2: Konfigurasinya adalah sebagai berikut:
<mvc: anotasi-driven> <mvc: pesan-converters> <Bean> <name properti = "ObjectMapper" Ref = "CustomObjectMapper"> </property> </bean> </mvc: converters pesan> </mvc: annotation-driven>
Efeknya adalah sebagai berikut:
Sebelum format
Setelah format
Lanjutan: Kembali ke Tanggal Format Kustom
Mengembalikan format tanggal string JSON saat menggunakan @ResponseBody. Atribut Tipe Tanggal Mengembalikan Jenis Waktu TimeSTel secara default. Bagaimana cara mengembalikan format tanggal khusus?
Solusi: Saat ini ada dua cara untuk mengimplementasikannya,
1. Modifikasi parsial (lebih online, tetapi tidak disarankan);
Mewariskan Kelas Abstrak Jackson: JSonserializer <T>, dan kemudian tambahkan anotasi @jsonserialize ke Properti Getter () dari Javabean.
Kodenya adalah sebagai berikut:
impor java.io.ioException; impor java.text.simpledateFormat; impor java.util.date; impor org.codehaus.jackson.jsongenerator; impor org.codehaus.jackson.jsonprocessingException; impor org.codehaus.jackson.map.jsonserializer; impor org.codehaus.jackson.map.serializerProvider; /** * @description Custom return JSON Date formatting processing in data grid*/ public class CustomDateSerializer extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat ("YYYY-MM-DD HH: MM: SS"); jsongenerator.writeString (sdf.format (nilai)); }} Bagaimana menggunakan:
@Jsonserialize (menggunakan = customDateSerializer.class) tanggal publik getCreateDate () {return createdate; } 2. Modifikasi global (sangat disarankan):
MappingjacksonhttpMessageConverter terutama menggunakan ObjectMapper untuk mengembalikan string JSON. Di sini kami mewarisi kelas ini dan mendaftarkan JSonserializer <T>. Kemudian suntikkan ObjectMapper khusus ke dalam file konfigurasi.
Kodenya adalah sebagai berikut:
impor java.io.ioException; impor java.text.simpledateFormat; impor java.util.date; impor org.codehaus.jackson.jsongenerator; impor org.codehaus.jackson.jsonprocessingException; impor org.codehaus.jackson.map.jsonserializer; impor org.codehaus.jackson.map.objectMapper; impor org.codehaus.jackson.map.serializerProvider; impor org.codehaus.jackson.map.ser.customserializerFactory; / *** @Description Selesaikan jenis tanggal untuk mengembalikan format JSON sebagai format khusus*/ kelas publik CustomObjectMapper memperluas objekMapper {public customObjectMapper () {customeSerializerFactory factory = customeSerializerFactory (); factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){ @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsongenerator.writeString (sdf.format (value)); this.setserializerFactory (pabrik); }}Konfigurasikan di spring-servlet.xml:
<mvc: anotasi-driven> <mvc: pesan-converters> <bean> <property name = "objectMapper" ref = "customObjectMapper"> </propert> </bean> </mvc: conuctObjecters> </mvc: annotation-driven> <bean id = "customObjecters" </mvc: annotation-driven> <bean id = "customobjecters" </mvc: annotation-drive