Джексон не может проанализировать LocalDateTime, поскольку созданный json является массивом, а Джексон ожидает строку - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужно использовать тип данных 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

...