Upickle:读取可能为String或Int作为String的属性

时间:2019-04-02 22:14:15

标签: scala upickle

我有一个字段可能来自rest api,为String或Int,但是当我读取它时,我总是想将其读取为String,即,如果它作为Int来,我想对其进行toString

    case class ZoneList(
        someField: Int,
        targetField: String
    )

    object ZoneList {
      implicit val rw: ReadWriter[ZoneList] = macroRW
    }

targetField是有问题的字段 看着http://www.lihaoyi.com/upickle/#CustomPicklers,但仍然不认为我有足够的能力来启动自定义选择器

编辑:

最终这样做

implicit val anyToStringReader: Reader[Option[String]] =
    reader[ujson.Value].map[Option[String]] { j =>
      Try(j.toString()).toOption
    }

如果我只能选择targetField属性,但是我的实际案例类有很多字段,并且我认为我不能这样做并且还利用默认宏,那将是首选。如果有人知道怎么让我知道

1 个答案:

答案 0 :(得分:0)

由lihaoyi解决了在上部的臭味:

”“如果您想单选该属性,请为它添加一个新的类型,该类型将围绕“选项字符串”进行包装,并为该类型编写您的选择器。”