spring-data-rest和controllers,使用相同的objectMaper进行序列化/反序列化

时间:2016-12-25 12:52:53

标签: spring spring-boot jackson spring-data spring-data-rest

我在spring-data-rest的文档中发现它使用了它自己的objectMapper实现。

我想知道是否可以重用此objectMapper,因此我可以使用与spring-data-rest端点

中相同的实体表示

例如,没有任何jackson objectMapper bean我有这个

端点:GET / api /公司

"createdDate": { "content": "2016-12-25T12:39:03.437Z" }, "lastModifiedDate": null, "createdById": null, "lastModifiedById": null, "active": true, "name": "A6", "addressSecondary": null, "foundingDate": { "content": "2016-01-01" },

但对于我的控制器,我有:

"createdDate": {
    "nano": 437000000,
    "epochSecond": 1482669543
},
"lastModifiedDate": null,
"createdById": null,
"lastModifiedById": null,
"active": true,
"name": "A6",
"addressSecondary": null,
"foundingDate": {
    "year": 2016,
    "month": "JANUARY",
    "era": "CE",
    "dayOfYear": 1,
    "dayOfWeek": "FRIDAY",
    "leapYear": true,
    "dayOfMonth": 1,
    "monthValue": 1,
    "chronology": {
    "calendarType": "iso8601",
    "id": "ISO"
}

这是我自己的控制器实现:

@RequestMapping(method = RequestMethod.GET, value = "companies", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<?> testRead() {
    List<Customer> customerRepositoryList = customerRepository.findAll();
    Resources<Customer> resources = new Resources<>(customerRepositoryList);
    return ResponseEntity.ok(resources);
}

我的代码中没有任何objectMap的bean。

如何获得相同的序列化?

1 个答案:

答案 0 :(得分:1)

我认为您只想正确输出 LocalDate LocalDateTime 字段。 如果是这样 - 将依赖项添加到项目中:

<!-- JDK 8 DateTime support for Jackson -->
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

这些对字段的注释:

@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate date;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime dateTime;