繁体   English   中英

值键不是play.api.libs.json.JsValue的成员

[英]value keys is not a member of play.api.libs.json.JsValue

我试图从Scala的JsValue类型的键中弄清楚。 我在Google上搜索了很多,以了解如何从JsValue类型获取头键。

最后,我发现result.keys.head是获取head键的方法,但是它抛出错误 值键不是play.api.libs.json.JsValue的成员

我的结果变量具有以下数据形式:

{
    "intents": [{
        "intent": "feeling",
        "confidence": 0.1018563217175903
    }],
    "entities": [],
    "input": {
        "text": "{reset-encounter}"
    },
    "output": "Good"
}

码:

import play.api.libs.json._
val jsonStr = """
{
        "intents": [{
            "intent": "feeling",
            "confidence": 0.1018563217175903
        }],
        "entities": [],
        "input": {
            "text": "{reset-encounter}"
        },
        "output": "Good"
    }
"""
val result = Json.parse(jsonStr)
println("key: ", result.keys.head)

result.keys.head行上,引发错误。

我不确定,但我认为可能是我在这里做错了。

你想得到什么? 那不是处理play.api.Json对象的方法。

.keys将导致Map而不是JsValue。

检查文档: https : //www.playframework.com/documentation/2.5.x/ScalaJson

如果要访问特定的密钥( https://www.playframework.com/documentation/2.5.x/ScalaJson#Traversing-a-JsValue-structure ),则应尝试:

result \ "keyName"

或进行递归搜索:

result \\ "keyName"

Json.parse产生一个JsValue ,它可以表示任何类型的json对象(布尔值,数字,数组等)。 如果知道您正在使用对象,则可以使用.as[JsObject]

import play.api.libs.json._

val result = Json.parse(jsonStr).as[JsObject]
println("key: " + result.keys.head)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM