JAX-RS JSON java.util. Дата НеМаршалл

Я использую Джерси (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', но я должен использовать определенный шаблон даты, и на маршальские и немаршальские даты.

Кто-то знает, как сделать это?

7
задан RustyTheBoyRobot 20 March 2013 в 15:48
поделиться

2 ответа

Вы получаете формат даты ISO 8601, который является стандартом. Джерси проанализирует его на сервере. Для javascript есть расширение для js date для его анализа.

Обновление Ссылка не работает: попробуйте другой анализатор, см. Справка по синтаксическому анализу даты ISO 8601 в Javascript

2
ответ дан 6 December 2019 в 09:58
поделиться

Вы можете написать 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;
}
16
ответ дан 6 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: