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