2017-01-11 2 views
0

저는 스칼라의 JsValue 유형의 키에서 머리를 얻으려고합니다. JsValue 유형에서 헤드 키를 얻는 방법을 알기 위해 많이 봤습니다.값 키가 play.api.libs.json.JsValue의 구성원이 아닙니다.

마지막으로, 나는 play.api.libs.json.JsValue의 구성원이 아닌 result.keys.head 머리 키를 얻을 수있는 방법이지만,이 오류값 키를 던졌습니다 발견.

코드
{ 
    "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, 오류가 발생

그리고 내 결과 변수의 데이터 아래의 양식을 가지고있다.

나는 잘 모르겠지만, 내가 뭔가 잘못하고있는 것 같습니다.

+0

오류 –

+0

@AlvaroCarrasco을 생산하는 실제 코드를 게시하시기 바랍니다. 코드를 확인하십시오. – iNikkz

+2

'JsValue'에는 실제로'keys '가 없습니다. 'JsObject'는 않습니다. 'JsObject'로 변환해야합니다. -'result.asInstanceOf [JsObject] .keys.head'. –

답변

0

Json.parse가 생산 임의의 유형의 json 객체 (부울, 숫자, 배열 등)를 나타낼 수있는 JsValue입니다. 당신이 객체로 작업하는 알고 있다면, 당신은 .as[JsObject]를 사용할 수 있습니다 감사합니다 :

import play.api.libs.json._ 

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

무엇을 얻으려고합니까? 그건 play.api.Json 개체를 다루는 방법이 아닙니다.

.keys는 Map이되며 JsValue가 아닙니다.

확인 문서 : 특정 키 (https://www.playframework.com/documentation/2.5.x/ScalaJson#Traversing-a-JsValue-structure)에 액세스하려면 https://www.playframework.com/documentation/2.5.x/ScalaJson

당신은 시도해야합니다 :

result \ "keyName" 

또는 재귀 검색

가 :

result \\ "keyName" 
+0

json 개체를 도메인에 모델링하려는 경우 (사례 클래스) http://pedrorijo.com/blog/scala-json/ 및 http://pedrorijo.com/blog/scala-json-part2/ – pedrorijo91

+0

@ Sarvesh Kumar Singh, Json Object는 ** keys **를 가지고 있지만 JsValue는 그렇지 않습니다. 내가 Json Object의 키에 대해 알지 못한다면, 나는 그들을 가져 오기 위해 ** 키 **가 필요합니다. – iNikkz

관련 문제