2

解析する JSON: http://www.dota2.com/jsfeed/heropickerdata?v=18874723138974056&l=english

Hero クラスと 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 の暗黙的な Reads を作成しようとしましたが、失敗しました。これが答えだと思う人がいたら、アドバイスをお願いします。

「型scala.collection.mutable.LinkedHashMap [String、models.Hero]のJsonデシリアライザーが見つかりません。この型の暗黙的な読み取りまたはフォーマットを実装してみてください。」と言い続けます。読み込もうとしているファイルに特性をインポートしました。Reads の最後の行が問題であるというおかしな感じがあります。asInstanceOf を実行することはできないと思いますが、この読み取りを実行する方法について他にアイデアがありません。

LinkedHashMap 暗黙の読み取りコード: http://pastebin.com/cf5NpSCX

4

1 に答える 1