【发布时间】:2018-04-19 11:27:11
【问题描述】:
我定义了@BeanobjectMapper,并设置日期格式如下:
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
当方法返回正常的ResponseEntity<SomeDTO> 时它可以工作。
示例 JSON 响应:
{
"id": 888,
"createdDate": "2017-11-06 13:50",
}
但是当我的控制器方法返回:ResponseEntity<PagedResources<SomeDTOResponse>>,然后createdDate 没有反序列化,我得到:
{
"_embedded": {
"someEntityResponseList": [
{
"id": 877,
"createdDate": 1509877100151
}
]
},
"_links": {
...
},
"page": {
...
}
}
我的控制器:
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<PagedResources<SomeDTOResponse>> getAllActiveAuctionsForLoggedUser(
Pageable pageable, PagedResourcesAssembler assembler) {
Page<SomeEntity> someEntites = someEntityService.getAllSomeEntities(pageable);
Page<SomeDTOResponse> response = assembler.toResource(someEntites.map(entity -> mapToResponse(entity))
return new ResponseEntity<>(response, HttpStatus.OK);
}
当我在最后一行return... 中放置断点时,对象response 包含:createdDate = {Timestamp@12184} "2017-11-05 10:54:14.345"。 mapToResponse() 这是我的自定义方法,但这不是问题。
那么如何才能得到正确的结果,正确的反序列化呢?
我的其他课程:SomeDtoResponse 和 SomeEntity。
@Data
public class SomeDtoResponse {
private Long id;
private Date createdDate;
}
@Entity
@Table(name = "SOME_ENTITY")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class SomeEntity {
@Id
@GeneratedValue
@Column(name = "SOME_ENTITY_ID")
private Long id;
@NotNull
private Date createdDate;
}
【问题讨论】:
-
什么是
ResponseEntity和PagedResources? -
@talex,
ResponseEntity: docs.spring.io/spring/docs/4.0.2.RELEASE/javadoc-api/org/… 和PagedResources: docs.spring.io/spring-hateoas/docs/current/api/org/…
标签: java json spring jackson objectmapper