2016-07-08 5 views
1

Я использовал ObjectMapper для сопоставления объекта с Json String. У меня есть поля Поля в объекте для форматирования даты, в которой я использовал приведенный ниже код, но он не форматируется, как ожидалось.ObjectMapper SetDateFormat() не работает

Мои Json Строка:

{"leaveRequestId":51,"reason":"xdvfsgf","leaveFromDate":"2016-07-13","leaveToDate":"2016-07-15","leaveTypeId":9,"statusId":1,"instanceId":"7527","createdBy":"pramod","createdOn":"2016-07-07","modifiedBy":null,"modifiedOn":null} 

Я использую следующий код:

@RequestMapping(value="/getLeaveRequest", method = RequestMethod.GET) 
@ResponseBody 
public String getLeaveRequest(int leaveRequestId) throws Exception { 
DAOFactory obj_daofactory=new DAOFactory(); 
ObjectMapper mapper = new ObjectMapper(); 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MMM-dd"); 
mapper.setDateFormat(df); 

LeaveRequest leaveRequest = obj_daofactory.getLeaveRequestDao().findByLeaveRequestId(leaveRequestId); 
if(leaveRequest.getLeaveRequestId() == 0){ 
    return "No data found"; 
} else { 
    System.out.println(leaveRequest.getLeaveFromDate().toString()); 
    String jsonInString = mapper.writeValueAsString(leaveRequest); 
    System.out.println(jsonInString); 
    return jsonInString; 
    } 
} 

МОЯ Ожидаемый вывод:

{"leaveRequestId":45,"reason":"test","leaveFromDate":"2016-Jul-07","leaveToDate":"2016-Jul-08","leaveTypeId":9,"statusId":1,"instanceId":"test1","createdBy":"[email protected]","createdOn":"2016-Jul-07","modifiedBy":"pramod","modifiedOn":"2016-Jul-08"} 

Дата должна быть в «2016-Jul- 07 "

Leav eRequest.java

import java.util.Date; 

public class LeaveRequest { 
    private int leaveRequestId; 
    private String reason; 
    private Date leaveFromDate; 
    private Date leaveToDate; 
    private int leaveTypeId; 
    private int statusId; 
    private String instanceId; 
    private String createdBy; 
    private Date createdOn; 
    private String modifiedBy; 
    private Date modifiedOn; 

    public LeaveRequest() { 

    } 

    public LeaveRequest(int leaveRequestId, String reason, Date leaveFromDate, Date leaveToDate,int leaveTypeId,int statusId, String instanceId, 
      String createdBy, Date createdOn, String modifiedBy, Date modifiedOn) { 
     this.leaveRequestId=leaveRequestId; 
     this.reason=reason; 
     this.leaveFromDate=leaveFromDate; 
     this.leaveToDate=leaveToDate; 
     this.leaveTypeId=leaveTypeId; 
     this.statusId=statusId; 
     this.instanceId=instanceId; 
     this.createdBy=createdBy; 
     this.createdOn=createdOn; 
     this.modifiedBy=modifiedBy; 
     this.modifiedOn=modifiedOn; 
    } 
    public LeaveRequest(String reason, Date leaveFromDate, Date leaveToDate,int leaveTypeId,int statusId, String instanceId, 
      String createdBy, Date createdOn) { 
     this.reason=reason; 
     this.leaveFromDate=leaveFromDate; 
     this.leaveToDate=leaveToDate; 
     this.leaveToDate=leaveToDate; 
     this.leaveTypeId=leaveTypeId; 
     this.statusId=statusId; 
     this.instanceId=instanceId; 
     this.createdBy=createdBy; 
     this.createdOn=createdOn; 
    } 
    public int getLeaveRequestId() { 
     return leaveRequestId; 
    } 

    public void setLeaveRequestId(int leaveRequestId) { 
     this.leaveRequestId = leaveRequestId; 
    } 

    public String getReason() { 
     return reason; 
    } 

    public void setReason(String reason) { 
     this.reason = reason; 
    } 

    public Date getLeaveToDate() { 
     return leaveToDate; 
    } 

    public void setLeaveToDate(Date leaveToDate) { 
     this.leaveToDate = leaveToDate; 
    } 

    public Date getLeaveFromDate() { 
     return leaveFromDate; 
    } 

    public void setLeaveFromDate(Date leaveFromDate) { 
     this.leaveFromDate = leaveFromDate; 
    } 

    public int getStatusId() { 
     return statusId; 
    } 

    public void setStatusId(int statusId) { 
     this.statusId = statusId; 
    } 

    public int getLeaveTypeId() { 
     return leaveTypeId; 
    } 

    public void setLeaveTypeId(int leaveTypeId) { 
     this.leaveTypeId = leaveTypeId; 
    } 

    public String getCreatedBy() { 
     return createdBy; 
    } 

    public void setCreatedBy(String createdBy) { 
     this.createdBy = createdBy; 
    } 

    public Date getCreatedOn() { 
     return createdOn; 
    } 

    public void setCreatedOn(Date createdOn) { 
     this.createdOn = createdOn; 
    } 

    public String getModifiedBy() { 
     return modifiedBy; 
    } 

    public void setModifiedBy(String modifiedBy) { 
     this.modifiedBy = modifiedBy; 
    } 

    public Date getModifiedOn() { 
     return modifiedOn; 
    } 

    public void setModifiedOn(Date modifiedOn) { 
     this.modifiedOn = modifiedOn; 
    } 

    public String getInstanceId() { 
     return instanceId; 
    } 

    public void setInstanceId(String instanceId) { 
     this.instanceId = instanceId; 
    } 

} 
+0

Если вам нужно 2016-июля-07, то dd-MMM-yyyy явно не является правильным шаблоном. Что такое код LeaveRequest? –

+0

Показать метод 'LeaveRequest # getLeaveFromDate()'. Возвращает ли он 'Date' или' String'? –

+0

Пожалуйста, отправьте фактический формат даты, который вы получаете сейчас. –

ответ

-1

Казалось бы, что поля leaveFromDate и т.д ... Вы используете java.sql.Date, вы должны преобразовать их в java.util.Date. SimpleFormatDate также работает правильно.

+0

Вы смотрели его ПОЖО? его явно говорит «import java.util.Date;» – Madhan

+0

Я думаю, что только эта проблема является причиной этой проблемы – NguaCon

1

Как вы уже сказали, вы вводите 2016-07-13 который составляет yyyy-MM-dd. Вы должны прочитать его с помощью yyyy-MM-dd и при написании Используйте yyyy-MMM-dd

ObjectMapper mapper = new ObjectMapper(); 
     try { 
      mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); 
      LeaveRequest lrq = mapper.readValue("{\"leaveRequestId\":51,\"reason\":\"xdvfsgf\",\"leaveFromDate\":\"2016-07-13\",\"leaveToDate\":\"2016-07-15\",\"leaveTypeId\":9,\"statusId\":1,\"instanceId\":\"7527\",\"createdBy\":\"pramod\",\"createdOn\":\"2016-07-07\",\"modifiedBy\":null,\"modifiedOn\":null}", LeaveRequest.class); 
      System.out.println(mapper.setDateFormat(new SimpleDateFormat("yyyy-MMM-dd")).writeValueAsString(lrq)); 
     } catch (IOException ex) { 
      Logger.getLogger(NewClass1.class.getName()).log(Level.SEVERE, null, ex); 
     } 
+0

Я не думаю, что ваш ответ верен в этом случае, потому что он преобразует POJO-объект LeaveRequest в JSON String. – NguaCon

+0

Благодарим за демонстрацию полного примера использования объекта ObjectMapper. Вы были бы удивлены, как трудно найти. – payne8

1

сериализации и десериализации должны войти в картину, когда вы манипулируете/изменить содержание согласно вашему требованию через ObjectMapper. Вы можете больше узнать об этом here

Эта тема также обсуждалась here.

Смежные вопросы