java - ObjectMapper SetDateFormat() 不起作用

标签 java json spring

我使用 ObjectMapper 将对象映射到 Json 字符串。 我在对象中有日期字段来格式化日期,我使用了下面的代码,但它没有按预期格式化。

我的 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":"deepak.paul@muraai.com","createdOn":"2016-Jul-07","modifiedBy":"pramod","modifiedOn":"2016-Jul-08"}

日期必须采用“2016-Jul-07”格式

LeaveRequest.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;
    }

}

最佳答案

正如您所说,您输入的是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);
        }

关于java - ObjectMapper SetDateFormat() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38260035/

相关文章:

JavaFx 自定义 ListCell 为空

java - 如何使用管理员权限从java运行批处理文件?

java - Realm 从 map 序列化数据

java - 如何在 Spring REST 的一个参数中传递键值

java - 如何在java netbeans中捕获空jtable?

java - CAS-Apereo Jasig : How to redirect to a custom web page after a successful login?

php - 如何从YouTube Feed中提取RTSP链接

json - 如何在swift中下载后修改视频格式

java - Spring Batch - JdbcCursorItemReader 使用大型 MySQL 表抛出 OutOfMemoryError

java - 使用 Spring AOP 调用包含在切面中的方法时出现 HttpMessageNotWritableException