Skip to content
Advertisement

Java Object Mapper date conversion to Json

I am using ObjectMapper to convert a list of objects to JSON, however the date field converts into key-value see below current output

current output:

{"startDateTime": {"year":2021,"monthValue":8,"dayOfMonth":24,"hour":20,"minute":5,"second":56,"nano":0,"month":"AUGUST","dayOfWeek":"TUESDAY","dayOfYear":236,"chronology":{"id":"ISO","calendarType":"iso8601"}}

Output expected is

 {"startDateTime": "24-08-2021 17:56:16",
                "endDateTime": "24-08-2021 17:57:00",
                "userName": "Lakshman"}

My code:

ObjectMapper objectMapper = new ObjectMapper();
DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
objectMapper.setDateFormat(df);
String jsonList = objectMapper.writeValueAsString(userList);
System.out.println("userlog =>> " + jsonList);

User Class

public class UserEventsEntity implements Serializable {

    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @JsonIgnore
//    @CreationTimestamp
    @Column(name="start_date_time")
    @JsonFormat(pattern="dd-MM-yyyy HH:mm:ss", timezone="Asia/Kolkata")
    private LocalDateTime startDateTime;
    
    @JsonIgnore
//    @CreationTimestamp
    @Column(name="end_date_time", nullable =true)
    @JsonFormat(pattern="dd-MM-yyyy HH:mm:ss", timezone="Asia/Kolkata")
    private LocalDateTime endDateTime;
    
       
    @Column(length = 25,  nullable = false)
    private String userName;
    
    @JsonFormat(pattern="dd-MM-yyyy HH:mm:ss", timezone="Asia/Kolkata")
    public LocalDateTime getStartDateTime() {
        return startDateTime;
    }

     
    public void setStartDateTime(LocalDateTime startDateTime) {
        this.startDateTime = startDateTime;
    }

    @JsonFormat(pattern="dd-MM-yyyy HH:mm:ss", timezone="Asia/Kolkata")
    public LocalDateTime getEndDateTime() {
        return endDateTime;
    }

    public void setEndDateTime(LocalDateTime endDateTime) {
        this.endDateTime = endDateTime;
    }
 public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

}

Advertisement

Answer

by registering the JavaTimeModule the issue is resolved

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
String jsonList = objectMapper.writeValueAsString(userList);
System.out.println("userlog =>> " + jsonList);
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement