Skip to content

Instantly share code, notes, and snippets.

@propensive
Created June 12, 2013 20:05
Show Gist options
  • Save propensive/5768643 to your computer and use it in GitHub Desktop.
Save propensive/5768643 to your computer and use it in GitHub Desktop.
Comparison of Rapture I/O JSON extraction using a for comprehension, and using Scala Async.
import rapture.io._
import scala.async._
import Async._
import scala.concurrent._
import ExecutionContext.Implicits.global
import strategy.returnFutures
implicit val encoding = Encodings.`UTF-8`
val forStyle = for {
src <- (Http / "rapture.io" / "example.json").slurp[Char]
json <- Json.parse(src)
first <- json.firstName.get[String]
last <- json.lastName.get[String]
home <- json.phoneNumber(0).number.get[String]
entry <- Future(s"${last}, ${first}: ${home}")
} yield entry
val asyncStyle = async {
val src = await((Http / "rapture.io" / "example.json").slurp[Char])
val json = await(Json.parse(src))
s"${await(json.lastName.get[String])}, ${await(json.firstName.get[String])}: ${await(json.phoneNumber(0).number.get[String])}"
}
println(forStyle.value)
println(asyncStyle.value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment