Как вы настраиваете, как Джексон анализирует календарь? Есть ли способ установить формат?
я использую
@RequestMapping(value = "/assign", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Form5398Obj arriveTrip(@PathVariable String siteId,
@RequestBody ErrorMsg anError) throws Exception {
System.out.println(anError.toString());
}
Я заметил, что я получаю ERROR 400, потому что поле Calendar в ErrorMsg не преобразуется должным образом. Если я удалю его из POST, он будет работать правильно.
Я заметил из поиска, что есть некоторые стандартные формы, которые работали для меня "" yyyy-MM-dd'T'HH: mm: ss.SSSZ "," yyyy-MM-dd'T'HH: mm: ss.SSS 'Z' "," EEE, dd MMM yyyy HH: mm: ss zzz "," yyyy-MM-dd "
Есть ли все-таки, чтобы явным образом сказать, что он разбирается определенным образом?
Посмотрите здесь, в разделе часто задаваемых вопросов о способах его использования для Jackson 2.0.
Пример из часто задаваемых вопросов для сериализации:
public class DateStuff {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:00", timezone="CET")
public Date creationTime;
}
Независимо от этого, существует возможность написать собственный класс Serializer и аннотировать свойство с помощью @JsonDeSerialize(using MyDeSerializer.class)
public class MyJsonDateDeserializer extends JsonDeserializer<Date>
{
@Override
public Date deserialize(JsonParser jsonparser,
DeserializationContext deserializationcontext) throws IOException, JsonProcessingException {
SimpleDateFormat f = new SimpleDateFormat("dd.MM.yyyy"); // german date
String d = jsonparser.getText();
try {
return f.parse(d);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
@JsonFormat
сработало для меня. Спасибо! Я думал, что аннотация была только при сериализации в JSON.