Spring mvc REST和mongoDB日期字段的问题

时间:2016-04-14 21:33:40

标签: json mongodb spring-mvc datetime spring-restcontroller

我在REST JSON响应中返回存储在mongodb中的日期时遇到问题。我正在使用Spring-MVC 4.2.5 @RestController和@ResponseBody。我将日期存储在Mongodb中作为“createdDate”:ISODate(“2016-04-14T20:26:00.682Z”)。当我将集合返回到spring mvc中的控制器并将JSON数据返回给客户端时,整个DateTime(JODA)类被jsonified。我只需要DD-MM-YYYY格式的日期而不是所有其他属性。我不想将日期作为字符串存储在monngoDB中。

这就是我设定日期的方式:

  DateTime date = new DateTime(DateTimeZone.forID("Asia/Kolkata"));
    booking.setCreatedDate(date);

这就是它在MongoDB中的样子。

     "createdDate" : ISODate("2016-04-14T20:26:00.682Z")

这就是我创建响应的方式:

  Object resp;
  booking = getFromMongo(id);
  resp.setBooking(booking)
  return resp;

以下是我的JSON回复

            "createdDate": {
            "year": 2016
            "minuteOfHour": 56
            "weekyear": 2016
            "yearOfEra": 2016
            "hourOfDay": 1
            "era": 1
            "dayOfMonth": 15
            "dayOfWeek": 5
            "dayOfYear": 106
            "secondOfMinute": 0
            "millisOfSecond": 764
            "weekOfWeekyear": 15
            "yearOfCentury": 16
            "monthOfYear": 4
            "centuryOfEra": 20
            "secondOfDay": 6960
            "minuteOfDay": 116
            "millisOfDay": 6960764
            "zone": {
            "uncachedZone": {
            "cachable": true
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            "millis": 1460665560764
            "chronology": {
            "zone": {
            "uncachedZone": {
            "cachable": true
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            }-
            "equalNow": false
            "beforeNow": true
            "afterNow": false
            }

如何避免jsonifying整个DateTime类。

1 个答案:

答案 0 :(得分:0)

要将日期格式化为yyyy-MM-dd,您需要执行以下操作:

1.在com.fasterxml.jackson.datatype:jackson-datatype-joda上添加依赖项。

2.通过将spring.jackson.serialization.write-dates-as-timestamps: false添加到application.properties文件,将Jackson配置为不将日期格式设置为时间戳。

3.使用@JsonFormat(pattern="yyyy-MM-dd")

注释LocalDataTime字段或getter方法

这足以让json响应为yyyy-MM-dd。您可能会遇到时区问题。 详情请点击此处: https://github.com/FasterXML/jackson-datatype-jsr310/issues/14