Значение даты синтаксического анализа как JSON в запросе веб-сервиса RESTful
Как отправить значение даты в объект календаря в запросе веб-сервиса.
@Produces("application/json")
@Path("Service")
public class ServiceImpl {
@Context
HttpServletRequest httpServletRequest;
@Context
HttpServletResponse httpServletResponse;
@POST
@Path("getDetails")
@Consumes("application/json")
@Produces("application/json")
public String getDetails (ServiceRequest request)
{
if(null!=request)
return "Successfully Parsed given Date";
}
}
public class ServiceRequest {
private XMLGregorianCalendar requestDate;
void setDate(XMLGregorianCalendar date){
this.requestDate = date;
}
XMLGregorianCalendar getDate()
{
return requestDate;
}
}
URL запроса: http://localhost:7001/WebProject/Service/getDetails
RequestParams:
{
"requestDate" : "2015-04-20T05:30:00.000Z"
}
И это не парсинг значения как даты. Как я мог передать значение для объекта календаря.
Я использую jenson jar для сериализации запроса. И сообщение об ошибке похоже
Caused by: com.owlike.genson.JsonBindingException: Could not parse date 2015-04-20T05:11:00.000Z
at com.owlike.genson.convert.DefaultConverters$DateConverter.deserialize(DefaultConverters.java:1003)
at com.owlike.genson.convert.DefaultConverters$CalendarConverter.deserialize(DefaultConverters.java:1226)
at com.owlike.genson.convert.DefaultConverters$CalendarConverter.deserialize(DefaultConverters.java:1209)
at com.owlike.genson.convert.BeanViewConverter.deserialize(BeanViewConverter.java:102)
at com.owlike.genson.convert.NullConverter$NullConverterWrapper.deserialize(NullConverter.java:56)
at com.owlike.genson.reflect.PropertyMutator.deserialize(PropertyMutator.java:30)
... 48 more
Caused by: java.text.ParseException: Unparseable date: "2015-04-20T05:11:00.000Z"
at java.text.DateFormat.parse(DateFormat.java:337)
at com.owlike.genson.convert.DefaultConverters$DateConverter.read(DefaultConverters.java:1009)
at com.owlike.genson.convert.DefaultConverters$DateConverter.deserialize(DefaultConverters.java:1001)
... 53 more
1 ответ
Если вы используете Genson 1.2 и старше, чем да, два ответа, указанные в комментариях, должны работать для вас. Начиная с Genson 1.3 произошел небольшой рефакторинг вокруг настройки расширения JAX-RS, так что теперь это должно быть проще. Пример использования Джерси:
Genson genson = new GensonBuilder()
.useDateFormat(yourDateFormat)
.create();
new ResourceConfig().register(new GensonJaxRSFeature().use(genson));
Но старый способ регистрации пользовательского экземпляра должен продолжать работать с 1.3 и выше.
Вот соответствующие документы о jax-rs и конфигурации.