首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在自定义序列化程序中转义反斜杠的Java

在自定义序列化程序中转义反斜杠的Java
EN

Stack Overflow用户
提问于 2020-02-04 16:23:54
回答 1查看 84关注 0票数 1

我需要将一个Java LocalDate (例如,2020-02-04)序列化成以下格式:"myProperty":"\/Date(-2209165200000+0100)\/",作为我们处理该格式请求的接口。我们目前正在使用最新版本的GSON (2.8.6)

目前,我们的自定义LocalDate序列化程序如下所示:

代码语言:javascript
复制
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中,不允许只使用像"\/"这样的字符串,因为这将导致编译器错误。

有什么简单的方法可以用一个反斜杠得到我们的结果吗?

(谢谢和亲切的问候:)

马可

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 08:07:19

我们通过返回一个新的JsonPrimitive而不是使用context来解决我们的问题

所以我们现在使用的是return new JsonPrimitive("/Date(" + timeInMillis + offset + ")/");,现在一切都很好。尽管如此,还是感谢您的投入,非常感谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60061615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档