My problem is that I need to deserialize my json response from the server into a java object, but the problem is that after deserialization, there are only null in the set fields. The answer from the server checked the filled fields come. What am I doing wrong and how to fix it? Thanks for the help.
This my method service
public ReportDataFromReporter getReports(int weekNumber, int year) throws JsonProcessingException {
LocalDate mondayOfWeek = LocalDate.of(year, Month.JUNE, 1)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, weekNumber);
LocalDate sundayOfWeek = mondayOfWeek.plusDays(6);
String url = "example.com";
ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule());
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
objectMapper.setDateFormat(dateFormat);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ObjectForRequestToReporter objectForRequestToReporter = new ObjectForRequestToReporter();
objectForRequestToReporter.setToken(userService.getUser().getReporterToken());
objectForRequestToReporter.setEmployee(userService.getUser().getLogin());
objectForRequestToReporter.setFrom(mondayOfWeek);
objectForRequestToReporter.setTo(sundayOfWeek);
String jsonObject = objectMapper.writeValueAsString(objectForRequestToReporter);
System.out.println(jsonObject);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
httpHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>(jsonObject, httpHeaders);
String reporterResponse = restTemplate.postForObject(url, entity, String.class);
ReportDataFromReporter reportDataFromReporter = objectMapper
.readValue(reporterResponse, ReportDataFromReporter.class);
System.out.println(reportDataFromReporter);
return reportDataFromReporter;
this is the Java object I need to deserialize into
@Data
public class ReportDataFromReporter {
private Long id;
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate day;
private Integer hours;
private String description;
private Long project;
private Long taskType;
private Long work_after;
}
This response from external api in json
{
"reports": [
{
"id": somenumber,
"date": "2023-03-15T00:00:00+03:00",
"hour": "sometext",
"text": "sometext",
"pro": somenumber,
"task": somenumber,
},
{
"id": somenumber,
"date": "2023-03-15T00:00:00+03:00",
"hour": "sometext",
"text": "sometext",
"pro": somenumber,
"task": somenumber,
},
{
"id": somenumber,
"date": "somedate",
"hour": "sometext",
"text": "sometext",
"pro": somenumber,
"task": somenumber,
},
{
"id": somenumber,
"date": "2023-03-15T00:00:00+03:00",
"hour": "sometext",
"text": "sometext",
"pro": somenumber,
"task": somenumber,
}
]
}