Sho*_*ham 6 java spring spring-boot
我正在使用Spring-Boot 1.2.2和这段代码:
@RequestMapping(value = "/dates", method = RequestMethod.GET)
public Date getDates() {
return new Date();
}
Run Code Online (Sandbox Code Playgroud)
返回此响应:
1433241315047
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它回归"Sun May 31 16:26:43 IDT 2015"?我在谷歌上发现了一些例子,mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false)但无法弄清楚我应该在哪里写这个......
更新:
我向pom.xml添加了2个依赖项:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.4.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
并添加spring.jackson.date-format=yyyy-MM-dd到application.properties
仍然获取时间戳,所以我开始消除所有不必要的代码,发现删除@Configuration我的注释WebConfiguration.java解决了这个问题:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;
@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> httpMessageConverters) {
httpMessageConverters.add(new MappingJackson2HttpMessageConverter());
}
}
Run Code Online (Sandbox Code Playgroud)
我想这个类会以某种方式覆盖日期格式设置......所以我可以在这里指定日期格式吗?
小智 8
添加依赖项在com.fasterxml.jackson.datatype:jackson-datatype-joda上添加依赖项,并将spring.jackson.serialization.write-dates-as-timestamps:false添加到application.properties文件中.
这是一个类似post- json日期格式的spring-boot
在你的application.properties中添加spring.jackson.date-format = #Date格式字符串(例如yyyy-MM-dd HH:mm:ss),或完全限定的日期格式类名(例如com.fasterxml.jackson.databind) .util.ISO8601DateFormat)
您可以尝试编写自定义日期反序列化程序 -
// CustomDateSerializer类
public class CustomDateSerializer extends JsonSerializer<Date> {
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,您需要注释date @JsonSerialize的getter方法(using = CustomDateSerializer.class)
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Bean
public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jsonConverter.setObjectMapper(objectMapper);
return jsonConverter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(customJackson2HttpMessageConverter());
super.addDefaultHttpMessageConverters();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18913 次 |
| 最近记录: |