Мне нужно сериализовать Java LocalDate (например, 2020-02-04) в следующий формат: "myProperty":"\/Date(-2209165200000+0100)\/"
, как интерфейс, с которым мы работаем с запросами этого формата. В настоящее время мы используем новейшую версию GSON (2.8.6)
Наш пользовательский LocalDate Serializer выглядит следующим образом:
public class LocalDateSerializer implements JsonSerializer<LocalDate> {
@Override
public JsonElement serialize(LocalDate src, Type typeOfSrc, JsonSerializationContext context) {
Instant instant = src.atStartOfDay(ZoneId.systemDefault()).toInstant();
long timeInMillis = instant.toEpochMilli();
ZoneOffset offset = OffsetDateTime.now().getOffset();
return context.serialize("\\/Date(" + timeInMillis + offset + ")\\/");
}
}
Проблема сейчас в том, насколько я знать, что функция context.serialize
избегает двойной обратной косой черты, поэтому конечный результат - "myProperty":"\\/Date(-2209165200000+0100)\\/"
вместо "myProperty":"\/Date(-2209165200000+0100)\/"
. И в Java 1.8 вам не разрешается просто иметь строку типа "\/"
, так как это приведет к в ошибке компилятора.
Есть ли какой-нибудь простой способ получить наш результат с одинарной обратной косой чертой?
Спасибо и всего наилучшего:)
Marco