Если вы хотите сериализовать Date
экземпляров, то лучше всего написать собственный сериализатор только для типа Date
, но я подозреваю, что это не вариант.
Более того- Object[]
- это довольно широкая спецификация, и она может конфликтовать с другими данными, которые должны быть сериализованы в вашей системе.Может быть, создание такого класса-обёртки выглядит следующим образом:
class MyWrapper {
Object[] objects;
}
И было бы лучше написать специальный сериализатор для этого конкретного класса-обёртки.
Что еще больше ( и это решениедля вашей проблемы ) - если вы сериализуете Array
, то вы должны поддерживать правильный синтаксис (выходные данные вашего сериализатора не содержат тегов start-end [
и end-array ]
).Чтобы исправить это, вы должны добавить вызовы методов writeStartArray()
и writeEndArray()
:
@Override
public void serialize(Object[] array,
JsonGenerator gen,
SerializerProvider provider)
throws IOException, JsonProcessingException {
gen.writeStartArray();
// processing array
gen.writeEndArray();
}
И последнее :) Если вы не хотите сериализовать другие типы по-своему - вы можете просто написать:
@Override
public void serialize(Object[] array,
JsonGenerator gen,
SerializerProvider provider)
throws IOException, JsonProcessingException {
gen.writeStartArray();
for(Object tempObject : array) {
if(tempObject instanceof Date) {
gen.writeString(tempObject.toString());
} else {
gen.writeObject(tempObject);
}
}
gen.writeEndArray();
}
PS.Также было бы неплохо использовать какую-то специализированную утилиту форматирования даты, например SimpleDateFormat , вместо того, чтобы полагаться на метод Date#toString
, если вы действительно не хотите использовать этот формат