我需要将一个Java LocalDate (例如,2020-02-04)序列化成以下格式:"myProperty":"\/Date(-2209165200000+0100)\/",作为我们处理该格式请求的接口。我们目前正在使用最新版本的GSON (2.8.6)
目前,我们的自定义LocalDate序列化程序如下所示:
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)\/",在Java1.8中,不允许只使用像"\/"这样的字符串,因为这将导致编译器错误。
有什么简单的方法可以用一个反斜杠得到我们的结果吗?
(谢谢和亲切的问候:)
马可
发布于 2020-02-11 08:07:19
我们通过返回一个新的JsonPrimitive而不是使用context来解决我们的问题
所以我们现在使用的是return new JsonPrimitive("/Date(" + timeInMillis + offset + ")/");,现在一切都很好。尽管如此,还是感谢您的投入,非常感谢!
https://stackoverflow.com/questions/60061615
复制相似问题