Tôi có ứng dụng JAX-RS sử dụng JBoss AS 7.1 và I POST/GET JSON và các đối tượng XML bao gồm Ngày (java.util.Date):Tuần tự hóa trong dịch vụ web REST REST dưới dạng chuỗi ISO-8601
@XmlRootElement
@XmlAccessorType(XmlAccessField.FIELD)
public class MyObject implements Serializable
{
@XmlSchemaType(name = "dateTime")
private Date date;
...
}
Khi tôi sử dụng @Produce ("application/xml") trên phương thức get, objets được tuần tự hóa dưới dạng XML và ngày được chuyển thành chuỗi ISO-8601 (ví dụ: "2012-12-10T14: 50: 12.123 +02: 00 ").
Tuy nhiên, nếu tôi sử dụng @Produce ("application/json") trên phương thức get, ngày trong đối tượng JSON là dấu thời gian (ví dụ: "1355147452530") thay vì chuỗi ISO-8601.
Tôi làm cách nào để định cấu hình triển khai JAX-RS (RESTEasy) để tuần tự hóa các ngày ở định dạng JSON dưới dạng chuỗi ISO-8601 thay vì dấu thời gian?
Cảm ơn câu trả lời của bạn.
Lưu ý: Tôi cũng cố gắng sử dụng một nhà cung cấp tùy chỉnh JAX-RS để làm serialization JSON cho Ngày
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJsonDateProvider implements MessageBodyWriter<Date>
{
...
}
nhà cung cấp này dường như được đăng ký bởi RESTeasy trên JBoss khởi động:
[org.jboss.jaxrs] Adding JAX-RS provider classes: package.CustomJsonDateProvider
...
[org.jboss.resteasy.cdi.CdiInjectorFactory] No CDI beans found for class package.CustomJsonDateProvider. Using default ConstructorInjector.
nhưng nó không bao giờ được sử dụng!
My JBoss EAP 7 JAX-RS implentation là RESTEasy và tôi đã làm' nt muốn thêm phụ thuộc Jackson. Sau một ngày nghiên cứu, tôi đã kết thúc với giải pháp của bạn ('JacksonConfig'). Tôi thêm Maven phụ thuộc ' com.fasterxml.jackson.core jackson-DataBind 2.8.7 'và sử dụng một định dạng ngày tháng tùy chỉnh' objectMapper.setDateFormat (SimpleDateFormat mới (" dd.MM.yyyy "))' thay vì tập hợp mặc định bằng 'objectMapper.configure()' –