java - Java GSON在自定义序列化程序中转义反斜杠
问题描述
我需要将 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
函数转义了双反斜杠,因此最终结果是And 在 Java 1.8"myProperty":"\\/Date(-2209165200000+0100)\\/"
中"myProperty":"\/Date(-2209165200000+0100)\/"
,您不能简单地使用 String like "\/"
,因为这将导致编译器错误.
有没有什么简单的方法可以用单反斜杠得到我们的结果?
谢谢和亲切的问候:)
马可
解决方案
如RFC 7159中所述,\/
表示转义的正斜杠并解码为\
.
因此,您想要返回context.serialize("/Date(" + timeInMillis + offset + ")/");
.
推荐阅读
- pine-script - 警报频率过多
- javascript - 如果某些属性发生变化,如何忽略 useEffect 执行任何操作?
- xml - 如何使用 XML 中的子字符串在多个节点中使用 XLS 修改元素的属性值
- powershell - PowerShell 中是否有类似 JavaScript 的 Array.prototype.some() 的语法?
- reactjs - 如何访问 useEffect() 中的状态变量
- javascript - 如何从 puppeteer 生成的跟踪文件中获取性能指标?
- autocomplete - Algolia - 自动完成允许查询建议以外的项目
- python - 使用烧瓶运行 python 脚本
- python - 从工作表中存储大量字符串的更简单方法-> MongoDB
- php - PHP - 在所有重定向后从 url 获取最终 url (curl + php)