json - 将 JsValue 转换为字符串

标签 json scala playframework-2.0

通读此文 article ,我不知道如何转换我的 Some(JsValue)到一个字符串。

例子:

val maybeString: Option[JsValue] = getSomeJsValue(); // returns Some(JsValue)

val str: String = maybeString match {
  case Some(x) => x.as[String]
  case _       => "0"
}

运行时错误:
play.api.Application$$anon$1: Execution exception[[JsResultException: JsResultException(errors:List((,List(ValidationErr
or(validate.error.expected.jsstring,WrappedArray())))))]]
        at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.3]

最佳答案

你想组合多个选项,这就是 flatMap 的用途:

maybeString flatMap { json =>
  json.asOpt[String] map { str =>
    // do something with it
    str
  }
} getOrElse "0"

或者作为理解:
(for {
  json <- maybeString
  str <- json.asOpt[String]
} yield str).getOrElse("0")

我还建议使用 map 中的值并传递 Option ,因此 None 将由您的 Controller 处理并映射到 BadRequest例如。

关于json - 将 JsValue 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519913/

相关文章:

json - 如何从多个 JSON 文件中删除重复项?

scala - 如何将外部范围的值隐式注入(inject) Scala 特征

scala - 对归并排序的实现感到困惑

scala - "case id ~ username => _"在anorm中如何理解?

database - 在 application.conf 中为 Play 2.0/anorm 加密数据库密码

scala - 如何在Playframework 2.0上设置Eclipse端工作

PHP MySQL 按项目分组查询

php - 查询返回 3 行的相同数据

javascript - 如何解决 NODE.Js HTTP POST "ECONNRESET"错误

scala - 未找到 HIVE 表