Próbuję wysłać dane od klienta do serwera za pomocą żądania JSON. Ciało żądanie JSON wygląda następująco:Obsługa żądań JSON w Play Framework 2.0 Scala
{
"upload":
{
"ok":"some message",
"assemblyId":"a9d8f72q3hrq982hf98q3"
}
}
Play jest w stanie rozpoznać ciało żądania jako JSON, ale gdy próbuję analizować poszczególne wartości, a mianowicie „upload” obiekt, Play narzeka, że nie może znajdź określony parametr.
metoda Scala jest następujący:
def add(course:Long) = withAccount { account => implicit request =>
println()
println(request.body) // output: AnyContentAsJson({"upload":{"ok":"ASSEMBLY_COMP...
request.body.asJson.map { json =>
println()
println(json) // output: {"upload":{"ok":"ASSEMBLY_COMPLETED","assemb...
(json \ "upload").asOpt[models.SomeClass].map { upload =>
Ok("Got upload")
}.getOrElse {
BadRequest("Missing parameter [upload]")
}
}.getOrElse {
BadRequest("Expecting Json data")
}
}
mam problemy ze zrozumieniem, dlaczego powyższy kod nie powiedzie się. Metoda nie ma problemu z odwzorowaniem treści żądania na obiekt Json. Polecenie "println (json)" wypisuje dokładnie to samo, co Chrome pokazuje mi jako "Request Payload". Jednak gdy próbuję pobrać obiekt główny, "upload", nie działa. A metoda zwraca złe żądanie narzekające na brakujący parametr.
Czy różni się to od instancji Format, która ma metody odczytu i zapisu? –
Myślę, że format jest funkcją 2.1? Nie jestem pewien, ale w anycase, potrzebujesz tylko odczyty do deserializacji. –
Mam format z metodami odczytu i zapisu. Kod kompiluje, myślę, że jest problem ze sposobem mapowania żądania json w moim kontrolerze. –