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

值键不是play.api.libs.json.JsValue的成员,json,scala,playframework,Json,Scala,Playframework,我试图从Scala中JsValue类型的键中获取头部。我在谷歌上搜索了很多,想知道如何从JsValue类型中获取头键 最后,我发现result.keys.head是获取head键的方法,但它抛出错误值键不是play.api.libs.json.JsValue的成员 我的结果变量具有以下数据形式: { "intents": [{ "intent": "feeling", "confidence": 0.1018563217175903 }],

我试图从Scala中JsValue类型的键中获取头部。我在谷歌上搜索了很多,想知道如何从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将生成一个
映射
,而不是JsValue

检查文档:

如果要访问特定密钥(),应尝试:

result \ "keyName"
或用于递归搜索:

result \\ "keyName"

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

.keys将生成一个
映射
,而不是JsValue

检查文档:

如果要访问特定密钥(),应尝试:

result \ "keyName"
或用于递归搜索:

result \\ "keyName"

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

import play.api.libs.json._

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

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

import play.api.libs.json._

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

请发布实际生成代码的代码error@AlvaroCarrasco:谢谢。请查看代码。
JsValue
实际上没有
JsObject
does。您需要将其转换为
JsObject
-
result.asInstanceOf[JsObject].keys.head
。请发布生成error@AlvaroCarrasco:谢谢。请查看代码。
JsValue
实际上没有
JsObject
does。您需要将其转换为
JsObject
-
result.asInstanceOf[JsObject].keys.head
。如果您想将json对象建模到您的域(案例类),请检查@Sarvesh Kumar Singh提到的json对象,json对象有键,而JsValue没有键。假设,我不知道Json对象的键,那么我需要.keys来获取它们。如果您想将Json对象建模到您的域(案例类),请检查@Sarvesh Kumar Singh提到的,Json对象有键,而JsValue没有。假设,我不知道Json对象的键,那么我需要.keys来获取它们。