1

我有自己的自定义 DateTime 类,我为此编写了以下自定义编写器和读取器:

val dtWriter = Writer[DateTime]{
    case t => Js.Str(format(t))
}
val dtReader = Reader[DateTime]{
    case Js.Str(time) =>
        try {
            parse(time)
        }
        catch {
            case _: Exception =>
                SDateTime(0)
        }
}

但是,我尝试将我的包版本从 0.4.4 升级到 0.7.1,并且此代码不再编译,给我以下错误:

错误:(7, 8) 对象 Js 不是包 upickle 的成员

进口泡菜.Js

错误:(112, 23) object Writer 不接受类型参数。

val dtWriter = 作家[日期时间]{

这应该如何在最新版本的 upickle 中重写?

4

1 回答 1

4

基于阅读http://www.lihaoyi.com/upickle/#CustomPicklers

val dtRW = readwriter[String].bimap[DateTime](
  t => format(t), // also `format _` or just `format` should work
  time =>
    try {
        parse(time)
    }
    catch {
        case _: Exception =>
            SDateTime(0)
    }
)
于 2019-01-25T07:46:33.420 回答