加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用Play框架在Scala中解析Json字符串

发布时间:2020-12-16 18:18:36 所属栏目:安全 来源:网络整理
导读:我开始尝试使用 Scala和Play来解析Json数据,并在 https://www.playframework.com/documentation/2.3.9/ScalaJson处遵循教程. 现在,当我尝试运行那里给出的示例代码时: val json: JsValue = Json.parse("""{ "name" : "Watership Down","location" : { "lat"
我开始尝试使用 Scala和Play来解析Json数据,并在 https://www.playframework.com/documentation/2.3.9/ScalaJson处遵循教程.
现在,当我尝试运行那里给出的示例代码时:

val json: JsValue = Json.parse("""{
  "name" : "Watership Down","location" : {
    "lat" : 51.235685,"long" : -1.309197
  },"residents" : [ {
    "name" : "Fiver","age" : 4,"role" : null
  },{
    "name" : "Bigwig","age" : 6,"role" : "Owsla"
  } ]
}
""")

val lat = json  "location"  "lat"

我收到以下错误:

java.lang.NoSuchMethodError: play.api.libs.json.JsValue.$bslash(Ljava/lang/String;)Lplay/api/libs/json/JsValue;

我究竟做错了什么?我正在使用Scala 2.10和Play 2.3.9.

谢谢.

解决方法

在Play 2.4.x中,JsLookupResult表示特定Json路径上的值,可以是实际的Json节点,也可以是未定义的. JsLookupResult有两个子类:分别是JsDefined和JsUndefined.

您可以按以下方式修改代码:

val name: JsLookupResult = json  "user"  "name"

name match {
  case JsDefined(v) => println(s"name = ${v.toString}")
  case undefined: JsUndefined => println(undefined.validationError)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读