我正在使用 springmvc 和 hibernate 做一个休息服务示例,其中我得到日期数据类型的毫秒格式的日期响应,我通过谷歌搜索使用了下面的代码,但这些代码没有效果,结果相同毫秒格式。下面是我使用的代码
Controller .java
/* Getting List of objects in Json format in Spring Restful Services */
@RequestMapping(value = "/list", method = RequestMethod.GET)
public @ResponseBody List getDatalist() {
List DataList = null;
try {
DataList = dataServices.getDataEntityList();
} catch (Exception e) {
e.printStackTrace();
}
return DataList;
}
DataValueTable.java
@JsonAutoDetect
@Entity
@Table(name = "DataValueTable")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class DataValueTable implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "ID")
private long id;
@JsonSerialize(using=JsonDateSerializer.class)
@Column(name = "Datatype")
private Date dataType;
@Column(name = "Datacategory")
private String dataCategory;
@Column(name = "DataValue")
private boolean dataValue;
public Date getDataType() {
return dataType;
}
public void setDataType(Date dataType) {
this.dataType = dataType;
}
JsonDateSerializer.java
package com.beingjavaguys.model;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
import org.springframework.stereotype.Component;
/**
* Used to serialize Java.util.Date, which is not a common JSON
* type, so we have to create a custom serialize method;.
*
* @author Loiane Groner
* http://loianegroner.com (English)
* http://loiane.com (Portuguese)
*/
@Component
public class JsonDateSerializer extends JsonSerializer<Date>{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
spring-config.xml
<context:component-scan base-package="com.beingjavaguys.controller" />
<mvc:annotation-driven />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://localhost;database=Sample" />
<property name="username" value="sdsd" />
<property name="password" value="sdsd" />
<property name="hibernate.dialect" value="com.beingjavaguys.model.SqlServerDialectWithNvarchar" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.beingjavaguys.model.Employee</value>
<value>com.beingjavaguys.model.DataValueTable</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="persistenceExceptionTranslationPostProcessor"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean id="dataDao" class="com.beingjavaguys.dao.DataDaoImpl"></bean>
<bean id="dataServices" class="com.beingjavaguys.services.DataServicesImpl"></bean>
</beans>
现在我收到的回复为“12312121000”。我希望它以 02-02-2015 格式显示。欢迎任何建议和答案。
最佳答案
使用 Jackson,您可以注释实体,例如
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss.000 ", timezone="UTC")
public Timestamp getDate() {
return date;
}
这是我用来获取模式中时间戳的测试用例示例。
ObjectMapper mapper = new ObjectMapper();
JaxbAnnotationModule module = new JaxbAnnotationModule();
mapper.registerModule(module);
mapper.setSerializationInclusion(Include.NON_NULL);
// Object to JSON - entityBean I want to map to JSON
String jsonOutput = mapper.writeValueAsString(entityBean);
注意。您必须将带注释的 JsonFormat 分配给 getter 方法。
关于java - 如何从 spring mvc 和 hibernate 中的 json 响应获取日期格式响应而不是毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34771646/