gpt4 book ai didi

java - 使用 PagedResources/嵌入对象反序列化日期。 jackson . Spring

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:18 25 4
gpt4 key购买 nike

我定义了@Bean objectMapper并设置日期格式如下:

ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));

当方法返回正常 ResponseEntity<SomeDTO> 时它就起作用了。JSON 响应示例:

{
"id": 888,
"createdDate": "2017-11-06 13:50",
}

但是当我的 Controller 方法返回时: ResponseEntity<PagedResources<SomeDTOResponse>> ,然后createdDate没有反序列化,我得到:

{
"_embedded": {
"someEntityResponseList": [
{
"id": 877,
"createdDate": 1509877100151
}
]
},
"_links": {
...
},
"page": {
...
}
}

我的 Controller :

@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()这是我的自定义方法,但这不是问题。那么如何才能得到正确的结果,正确的反序列化呢?

我的其他类(class):SomeDtoResponseSomeEntity .

@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;
}

最佳答案

确保您使用的 Date 类应属于以下类型:

import java.util.Date;

如果它是 Java.sql.Date,那么它会导致像您所面临的问题。我希望这能解决您的问题。

关于java - 使用 PagedResources/嵌入对象反序列化日期。 jackson . Spring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47151534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com