Я использую Джерси (jax-rs), для создания большого приложения REST.
Все является большим, но я действительно не понимаю, как настроить опции JSON Marshalling/Unmarshalling для дат и чисел.
У меня есть Пользовательский класс:
@XmlRootElement
public class User {
private String username;
private String password;
private java.util.Date createdOn;
// ... getters and setters
}
Когда createdOn
свойство сериализируется, я получаю строку как это: '2010-05-12T00:00:00+02:00', но я должен использовать определенный шаблон даты, и на маршальские и немаршальские даты.
Кто-то знает, как сделать это?
Вы получаете формат даты ISO 8601, который является стандартом. Джерси проанализирует его на сервере. Для javascript есть расширение для js date для его анализа.
Обновление Ссылка не работает: попробуйте другой анализатор, см. Справка по синтаксическому анализу даты ISO 8601 в Javascript
Вы можете написать XmlAdapter:
Ваш конкретный XmlAdapter будет выглядеть примерно так:
import java.util.Date;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class JsonDateAdapter extends XmlAdapter<String, Date> {
@Override
public Date unmarshal(String v) throws Exception {
// TODO convert from your format
}
@Override
public String marshal(Date v) throws Exception {
// TODO convert to your format
}
}
Тогда в свойстве даты установите следующую аннотацию:
@XmlJavaTypeAdapter(JsonDateAdapter.class)
public getDate() {
return date;
}