我在 springboot web 上遇到 Jackson 的一个小问题,我期待这样的回应。
{
'date': 'string of date'
}
但是我回来了
[
0: java.sql.date,
1: long number of timestamp
]
请问如何配置springboot来避免这种情况?
@Configuration
public class BootConfiguration {
@Bean
@Primary
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
public JavaTimeModule javaTimeModule() {
return new JavaTimeModule();
}
@Bean
public Jdk8Module jdk8TimeModule() {
return new Jdk8Module();
}
@Bean
public CoreJackson2Module coreJackson2Module() {
return new CoreJackson2Module();
}
@Bean
public OAuth2AuthorizationServerJackson2Module authorizationServerJackson2Module(){
return new OAuth2AuthorizationServerJackson2Module();
}
public List<Module> securityModules(){
ClassLoader classLoader = JdbcOAuth2AuthorizationService.class.getClassLoader();
return SecurityJackson2Modules.getModules(classLoader);
}
@Bean
@Primary
@Order(Ordered.HIGHEST_PRECEDENCE)
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper().findAndRegisterModules();
mapper.registerModule(coreJackson2Module());
mapper.registerModule(javaTimeModule());
mapper.registerModule(jdk8TimeModule());
mapper.registerModules(securityModules());
mapper.registerModule(authorizationServerJackson2Module());
mapper.addMixIn(UserPrincipal.class, Object.class);
return mapper;
}
}
这是控制器方法
@GetMapping(value = "/authentications", params = {"pge","lmt", "slug"})
public ResponseEntity<?> getLastLogins(
Authentication authentication,
@RequestParam("lmt")Integer limit,
@RequestParam("pge")Integer page,
@RequestParam("slug")String slug){
return new ResponseEntity<>(loginManager.findAllAuthentications(authentication.getName(),slug,limit,page), HttpStatus.OK);
}
}
这是包含我尝试取回的属性的模型
@Data
public class User implements Serializable {
private String firstName;
private String lastName;
private Date date;
private Role role;
}
我看到的唯一可能干扰您的 ObjectMapper 的问题是添加的 2 个额外模块。
mapper.registerModules(securityModules());
mapper.registerModule(authorizationServerJackson2Module());
尝试删除这 2 个,然后重试。