Мне нужно использовать тип данных LocalDateTime и сериализовать / десериализовать, чтобы выполнить тестирование Junit с использованием Mockito. К сожалению, Джексон не может проанализировать тип данных LocalDateTime, так как он ожидает String, а LocalDateTime генерирует массив объектов.
Я попытался преобразовать метку времени в LocalDateTime, но результат остался без изменений.
Date date=new Date();
Timestamp ts= new Timestamp(date.getTime());
LocalDateTime ld=ts.toLocalDateTime();
//The code below I have used
LocalDateTime nowt = LocalDateTime.now();
Inflow in=new Inflow();
in.setOrder(orderp);
in.setEta(nowt);
in.setAmount(10002);
repository.save(in);
InflowMsg inflow = new InflowMsg();
inflow.setAmt(10002);
inflow.setDate(nowt);
inflow.setOrd("OE12345");
String jsonInflow = mapper.writeValueAsString(inflow);
Message msg = new
MessageBuilder().message().setHeader(connector.genericHeader()).setPayload(jso
nInflow).build();
System.out.println("The json is" + jsonInflow);
this.mockMvc.perform(post("http://localhost:9003/abc/message/").content(jsonInflow).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
Вывод Json сгенерирован следующим образом:
type" : "inflow",
"order" : "OE12345",
"amount" : 10002,
"deliveryDate" : {
"hour" : 17,
"minute" : 22,
"nano" : 751000000,
"second" : 8,
"dayOfMonth" : 21,
"dayOfWeek" : "MONDAY",
"dayOfYear" : 294,
"month" : "OCTOBER",
"monthValue" : 10,
"year" : 2019,
"chronology" :
{ "id" : "ISO", "calendarType" : "iso8601" }
}
}
Здесь DeliveryDate является массивом, но ожидается строка. Таким образом Джексон не смог разобрать этот Json