В настоящее время у меня есть запрос от конечной точки API, который приходит в следующем формате.
{"amount":"122.96","timestamp":"2019-05-28T12:19:54.702Z"}
Я хочу попробовать преобразовать метку времени в объект календаря в указанном ниже ресурсе.
public class resource {
@JsonProperty
private BigDecimal amount;
@JsonProperty
private Calendar timeStamp;
}
Однако конечная точка не может отобразиться из-за следующего:
java.lang.Error: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.api.Resource]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.api.Resource` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)at [Source: (PushbackInputStream); line: 1, column: 2]
Я попытался добавить @JsonFormat, а также @JsonDeserializer, используя специальный десериализатор, прикрепленный ниже
CustomDeserializer.class
public class CalendarDeserializer extends StdDeserializer<Calendar> {
protected CalendarDeserializer() {
super(Calendar.class);
}
public Calendar deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
c.setTimeInMillis(jp.readValueAs(Long.class));
return c;
}
}
Я ожидаю, что смогу правильно отобразить метку времени на объект календаря