ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ 2019-05-31
Если я напишу образец main
метода, который создает экземпляр Item, а затем вызывает String s = new ObjectMapper().writeValueAsString(item);
, тогдаНастраиваемый сериализатор называется правильно и действует.
Проблема only появляется, когда все приложение развернуто на сервере Apache TomEE.
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ : это не проблема с размещением аннотации (на поле и на геттер), я пробовал различные комбинации этого (аннотация на геттер), аннотация на приватное поле, аннотация на публичное поле и т.д ...)
Код:
import com.fasterxml.jackson....
// YES, all JSON-related stuff is from fasterxml
@JsonAutoDetect
public class Item {
private Date lastModified;
@JsonSerialize(using = CSer.class)
public Date getLastModified() {
return lastModified;
}
public class CSer extends JsonSerializer<Date> {
public SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
gen.writeString(dateFormat.format(value));
}
}
}
// some place else, in a REST service class
...
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getItems(... {
...
return Response.ok(result.getData()).build();
// result.getData() is an ArrayList of "Item" objects.
}
ВОПРОСЫ :
- из того, что я знаю , формат вывода даты в формате JSON по умолчанию должен быть отметкой времени.В моем случае это не , а ггггМмддччммссZ
- пользовательский сериализатор не действует , я не могу изменить формат вывода датыи метод serialize никогда не вызывается.
Файлы Джексона в моей папке lib : jackson-annotations-2.8.0.jar, jackson-core-2.8.8.jar, jackson-databind-2.8.8.1.jar .
Что я делаю не так?
Спасибо.