在我的Play + Scala(2.5.x,2.11.11)应用程序中,我使用Case类将JSON转换为(客户端< - >应用程序和应用程序< - > DB)。使用内置的读/写转换变得完全自动化。
当DB返回字段的null
值并且相应的JSON输出不包含该键:值对时,会出现此问题。例如:
def getUserDetails (id: Option[String]) = Action.async {
dbch.dbProd.withConnection { implicit connection =>
val result: Option[SignupUserDetails] =
SQL"""select * from #$USR_LISTUSERS where (User_Pk = ${id})""".as(SignupUserDetailsParser.singleOpt)
......
}
}
案例类:
case class SignupUserDetails(User_Pk: Option[String], Emailid: Option[String], First_Name: Option[String], Last_Name: Option[String], Country: Option[String])
分析器:
implicit val SignupUserDetailsParser = Macro.namedParser[SignupUserDetails]
我发现了一个类似的问题,其中提到此行为应仅针对自定义类型发生,但不适用于String
类型:
Explicitly output JSON null in case of missing optional value
但它也不适用于String类型。