2016-07-08 26 views
1

我已經使用ObjectMapper將對象映射到Json字符串。 我在對象中有日期字段來格式化我使用下面的代碼的日期,但它沒有按預期格式化。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; 
    } 
} 

MY預期輸出:

{"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「格式

LeaveReq uest.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年7月07日,那麼dd-MMM-yyyy顯然不是正確的模式。什麼是LeaveRequest的代碼? –

+0

顯示'LeaveRequest#getLeaveFromDate()'方法。它會返回一個'Date'還是'String'? –

+0

請發佈你現在得到的實際日期格式 –

回答

-1

這似乎是該領域leaveFromDate,等等......你正在使用java.sql.Date,你應該將它們轉換爲java.util.DateSimpleFormatDate也正常運行。

+0

你看過他的POJO嗎?它清楚地說'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字符串。 – NguaCon

+0

感謝您展示如何使用ObjectMapper對象的完整示例。你會驚奇地發現它有多難。 – payne8

1

序列化和反序列化將要進入,當你操縱/修改內容按通過ObjectMapper您的要求的圖片。您可以參考更多關於此here

此主題也被討論here