如何为可选值创建Reads [T]

时间:2014-09-24 14:50:19

标签: json scala playframework playframework-2.0 deserialization

我的JSON中有一个名为“name”的字段。这可能有三种状态:

  • 空/未定义
  • 一个空字符串
  • 非空字符串

我希望这能作为Option [NonEmptyString]

从序列化器中出来

我实现了Reads [NonEmptyString],它读取一个String(最小长度为1)然后将它放入容器类(NonEmptyString)

如果我使用readNullable,那么当我尝试将其转换为NonEmptyString时,空字符串将抛出异常。

如果我实现了Reads [Option [NonEmptyString]],这不起作用,大概是因为Play将Option视为特殊情况

如何实现符合我要求的读取?

1 个答案:

答案 0 :(得分:1)

(JsPath \ "key").reads[Option[NonEmptyString]]

这是有效的,因为与readsNullable不同,它不需要正确地反序列化值