JSON для синтаксического анализа: http://www.dota2.com/jsfeed/heropickerdata?v=18874723138974056&l=englishPlay 2.1 Чтение JSON объектов с целью
Hero Class и 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
})
Мне нужно получить идентификатор каждого героя. Порядок heros в json соответствует их id. Очевидно, что карта неупорядоченная и не работает. У кого-нибудь есть другие идеи?
Я попытался использовать LinkedHashMap. Я даже пытался сделать неявное чтение для LinkedHashMap, но я потерпел неудачу. Если кто-то думает, что это ответ, пожалуйста, дайте мне несколько советов?
Он просто говорит: «Нет десанциализатора Json для типа scala.collection.mutable.LinkedHashMap [String, models.Hero]. Попробуйте реализовать неявные чтения или формат для этого типа.». У меня есть черта, импортированная в файл, который я пытаюсь прочитать. У меня странное чувство, что последняя строка в моих Чтениях - проблема. Я думаю, я не могу просто сделать asInstanceOf, но у меня нет других идей, как это сделать.
LinkedHashMap неявной Читает Код: http://pastebin.com/cf5NpSCX
Другой альтернативой было бы, вероятно, получить «Seq», а затем в коде изменить его на LinkedHashMap – Jatin
Проблема с этим - мне также нужно сохранить ключи. – Commander