无法通过播放 2 将 Scala 映射转换为 json
unable to convert scala map to json with play 2
我有一个案例 class 注册了一个可选变量 "secondaryEmail"
case class SignUp(firstNname : String,
var lastName: String,
var email: String,
var secondryEmail : Option[String]
)
我想将其转换为 Json 因为我已经编写了一个函数将其转换为 Map
def putInMap(obj: SignUp) = {
val signupMap = Map(
"firstname" -> obj.firstNname,
"lastname" -> obj.lastName,
"email" -> obj.email,
"secondryemail" -> Some(obj.secondryEmail)
)
signupMap
}
现在,当我尝试将其转换为 Json 时
val signupjson = Json.toJson(putInMap(SignUp))
它给我这个错误
未找到类型 scala.collection.immutable.Map[String,java.io.Serializable] 的 Json 序列化程序。尝试为此类型实现隐式写入或格式。
是否有任何其他方法可以解决此错误,或者我必须为此实现隐式写入?
我认为你应该这样修改你的代码:
def putInMap(obj: SignUp) = {
val signupMap = Map(
"firstname" -> obj.firstNname,
"lastname" -> obj.lastName,
"email" -> obj.email,
"secondryemail" -> obj.secondryEmail.getOrElse("")
)
signupMap
}
使用 getOrElse 访问一个值或在没有值时访问默认值:空字符串或您想要的任何字符串,
如果不是,你应该尝试编写用于解析 Json 的隐式方法 writes,正如 play framework documentation 在 Using Writes converters at this link 中所建议的,不要忘记使用 .writeNullable选项[String] 字段
您不需要首先将其转换为地图。
implicit val signupWriter = Json.writes[SignUp]
val up = SignUp("Jo", "B", "foo@mail.com", None)
val json = Json.toJson(up)
它会为你输出一个JsValue
。
我有一个案例 class 注册了一个可选变量 "secondaryEmail"
case class SignUp(firstNname : String,
var lastName: String,
var email: String,
var secondryEmail : Option[String]
)
我想将其转换为 Json 因为我已经编写了一个函数将其转换为 Map
def putInMap(obj: SignUp) = {
val signupMap = Map(
"firstname" -> obj.firstNname,
"lastname" -> obj.lastName,
"email" -> obj.email,
"secondryemail" -> Some(obj.secondryEmail)
)
signupMap
}
现在,当我尝试将其转换为 Json 时
val signupjson = Json.toJson(putInMap(SignUp))
它给我这个错误
未找到类型 scala.collection.immutable.Map[String,java.io.Serializable] 的 Json 序列化程序。尝试为此类型实现隐式写入或格式。
是否有任何其他方法可以解决此错误,或者我必须为此实现隐式写入?
我认为你应该这样修改你的代码:
def putInMap(obj: SignUp) = {
val signupMap = Map(
"firstname" -> obj.firstNname,
"lastname" -> obj.lastName,
"email" -> obj.email,
"secondryemail" -> obj.secondryEmail.getOrElse("")
)
signupMap
}
使用 getOrElse 访问一个值或在没有值时访问默认值:空字符串或您想要的任何字符串,
如果不是,你应该尝试编写用于解析 Json 的隐式方法 writes,正如 play framework documentation 在 Using Writes converters at this link 中所建议的,不要忘记使用 .writeNullable选项[String] 字段
您不需要首先将其转换为地图。
implicit val signupWriter = Json.writes[SignUp]
val up = SignUp("Jo", "B", "foo@mail.com", None)
val json = Json.toJson(up)
它会为你输出一个JsValue
。