1

我在使用 Play 2.1 解析器解析 JSON 响应时遇到了一些麻烦。假设我收到以下 json 作为字符串:

{“姓名”:“我的姓名”}

我可以使用这几行来解析它......

case class MyJsonObj(name: String)
implicit val jsonRead = (
  (__ \ "name").read[String])(MyJsonObj.apply _)
val myObj = Json.parse("{\"name\": \"myName\"}").valide[MyJsonObj]

现在说我收到几乎相同的消息,但我收到的不是字符串“myName”而是一个空值(即:{“name”:null}),解析失败......理想情况下,每当我收到一个空值时,我会喜欢放一个默认值(而不是引发错误)并继续解析。

有什么建议么?谢谢!

4

1 回答 1

2

readNullable您可以使用or实现此目的orElse

(__ \ 'name).readNullable[String].map(_.getOrElse("default"))
// Another solution:
(__ \ 'name).read[String] orElse Reads.pure("default")

注意:读者不能很好地使用“one-field”案例类(但我想这只是为了这个例子)。否则,请参阅此主题

于 2013-01-28T19:27:27.297 回答