【发布时间】:2020-02-04 16:23:54
【问题描述】:
我需要将 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)\/"
在 Java 1.8 中,您不能简单地使用像 "\/" 这样的字符串,因为这会导致编译器错误。
有没有什么简单的方法可以用单反斜杠得到我们的结果?
感谢和亲切的问候:)
马可
【问题讨论】:
标签: java json serialization gson escaping