Fecha de formato al devolver la fecha de JSON
Paso 1: Crear clase CustomObjectMapper
/*** Resuelve el problema de que cuando SpringMVC usa @ResponseBody para devolver JSON, el formato de fecha se muestra como una marca de tiempo de forma predeterminada. Necesita usar */ @Component ("CustomObjectMapper") public class CustomObjectMapper extiende ObjectMapper {public CustomObjectMapper () {CustomSerializerFactory Factory = new CustomSerializerFactory (); factory.addGenericMapping (date.class, new JSonserializer <date> () {@Override public void serialize (valor de fecha, jsongenerator JSongenerator, SerializerProvider Provider) lanza IOException, JSONProcessingException {SimpledateFormat SDF = New SimpledateFormat ("yyyy-MM-DDDS-MMM: MMM:"; jSongenerator.writeString (sdf.format (valor)); this.setserializerFactory (fábrica); }}Paso 2: La configuración es la siguiente:
<mvc: annotation-riven> <mvc: mensaje-Converters> <Bean> <Property Name = "ObjectMapper" Ref = "CustomObjectMapper"> </property> </bean> </mvc: mensajes-Converters> </mvc: annotation-riven>
Los efectos son los siguientes:
Antes de formatear
Después de formatear
Avanzado: Regrese a la fecha de formato personalizado
Devuelve el formato de fecha de la cadena JSON cuando se usa @ResponseBody. El atributo de tipo de fecha devuelve una marca de tiempo de tipo largo de forma predeterminada. ¿Cómo puede devolver un formato de fecha personalizado?
Solución: Actualmente hay dos formas de implementarlo,
1. Modificaciones parciales (más en línea, pero no recomendadas);
Heredar la clase abstracta de Jackson: JSonserializer <T>, y luego agregue la anotación @JSonserialize a la propiedad Getter () del Javabean.
El código es el siguiente:
import java.io.ioException; import java.text.simpledateFormat; import java.util.date; importar org.codehaus.jackson.jsongenerator; importar org.codehaus.jackson.jsonprocessingException; importar org.codehaus.jackson.map.jsonserializer; importar org.codehaus.jackson.map.serializerProvider; / *** @Description Returns Custom JSON Fecha de formato Procesamiento en la cuadrícula de datos*/ Class CustomDateSerializer de clase pública extiende JSonserializer <Date> {@Override public void Serialize (valor de fecha, jsonGenerator JSonGenerator, SerializerProvider Provider) lanza IoException, JSONProCessingException {SimpledAformat SDF = NeweNeSpider Provider SimpleDateFormat ("aaa yyy-mm-dd hh: mm: ss"); JSongenerator.WriteString (sdf.format (valor)); }} Cómo usar:
@JSonserialize (use Uting = CustomDateserializer.Class) Fecha pública GetCreateDate () {return creatate; } 2. Modificación global (muy recomendable):
MappingjacksonhttpMessageConverter utiliza principalmente ObjectMapper para devolver las cadenas JSON. Aquí heredamos esta clase y registramos un JSonserializer <T>. Luego inyecte un ObjectMapper personalizado en el archivo de configuración.
El código es el siguiente:
import java.io.ioException; import java.text.simpledateFormat; import java.util.date; importar org.codehaus.jackson.jsongenerator; importar org.codehaus.jackson.jsonprocessingException; importar org.codehaus.jackson.map.jsonserializer; importar org.codehaus.jackson.map.objectMapper; importar org.codehaus.jackson.map.serializerProvider; importar org.codehaus.jackson.map.ser.customserializerFactory; / *** @Description Resuelve el tipo de fecha para devolver el formato JSON como un formato personalizado*/ public class CustomObjectMapper extiende ObjectMapper {public CustomObjectMapper () {CustomSerializerFactory Factory = new CustomSerializerFactory (); factory.addGenericMapping (date.class, new JSonserializer <date> () {@Override public void serialize (valor de fecha, jsongenerator JSongenerator, SerializerProvider Provider) lanza IOException, JSONProcessingException {SimpledateFormat SDF = New SimpledateFormat ("yyyy-MM-DDDS-MMM: MMM:"; jSongenerator.writeString (sdf.format (valor)); this.setserializerFactory (fábrica); }}Configurar en Spring-Servlet.xml:
<mvc: annotation-riven> <mvc: mensaje-confonverters> <ruye> <propiedad name = "objectMapper" ref = "customObjectMapper"> </property> </bean> </mvc: mensajes-Converters> </mvc: annotation-driven> <bean id = "customObjectMapper"> </bean>