2.1 독서 JSON 개체를 재생 : http://www.dota2.com/jsfeed/heropickerdata?v=18874723138974056&l=englishJSON을 구문 분석하기 위해
영웅 클래스와 JSON 직렬화를
case class Hero(
var id:Option[Int],
name: String,
bio: String,
var trueName:Option[String]
){}
implicit val modelReader: Reads[Hero] = Json.reads[Hero]
데이터 읽기
val future: Future[play.api.libs.ws.Response] = WS.url("http://www.dota2.com/jsfeed/heropickerdata?v=18874723138974056&l=english").get()
val json = Json.parse(Await.result(future,5 seconds).body).as[Map[String, Hero]]
var i = 1
json.foreach(p => {
p._2.trueName = Some(p._1)
p._2.id = Some(i)
p._2.commitToDatabase
i += 1
})
나는 각 영웅의 ID를 얻을 필요가있다. json의 히어로 순서는 ID와 일치합니다. 분명히지도는 순서가없고 작동하지 않을 것입니다. 누구든지 다른 아이디어가 있습니까?
LinkedHashMap을 사용하려고했습니다. LinkedHashMap에 대한 암시 적 읽기를 시도했지만 실패했습니다. 누군가 이것이 이것이 대답이라고 생각하면 나에게 약간의 지침을 주시겠습니까?
그냥 "No Json 디시리얼라이저가 scala.collection.mutable.LinkedHashMap [String, models.Hero] 유형에 대해 발견되었습니다.이 유형에 대한 암시 적 읽기 또는 형식 구현을 시도하십시오.". 내가 읽으려고하는 파일에 특성을 가져 왔습니다. 내 읽기의 마지막 줄이 문제라는 재미있는 느낌이 들었습니다. 나는 asInstanceOf를 수행 할 수 없다고 생각하지만,이 작업을 수행하는 방법에 대한 다른 아이디어는 없습니다. 암시 적
의 LinkedHashMap 코드 읽기 : http://pastebin.com/cf5NpSCX
또 다른 방법은 아마도 'Seq'로 가져온 다음 코드에서 LinkedHashMap으로 변경하는 것입니다. – Jatin
그 문제는 키를 보존해야한다는 것입니다. – Commander