使用play json解析json文件

时间:2018-06-12 13:35:04

标签: json scala playframework

我正在读取HDFS序列文件,其中[Long,String]允许将每条记录作为消息调用。 message._2是一个json字符串,我正在尝试使用play json库解析它,但是当我这样做时会出现以下错误。

错误:

found   : Seq[play.api.libs.json.JsValue]
required: String

代码:

val jsonString = message._2.toString();
val json = Json.parse(jsonString);
code = (json(0) \\ "code"); -- > Error is pointing to \\ on this line

1 个答案:

答案 0 :(得分:1)

错误消息显示(json(0) \\ "code")返回Seq[play.api.libs.json.JsValue],并且您尝试将此值分配给code类型的变量String

所以,你可能想要这样做:

code = (json(0) \\ "code").head.as[String]

将获取列表的第一项并将JsValue转换为String

<强>更新

正如@cchantep建议的那样,使用head并不安全,因此为了更好的安全性,您可以使用headOption执行此操作,但结果类型为Option[String]

val code: Option[String] =
    (json \\ "code").headOption.map(_.as[String])

更安全的代码如下所示:

val code: Option[String] =
    (json \\ "code").headOption.flatMap(_.asOpt[String])