2

I am trying to parse JSON data returned from an HTTP request as below. import scalaj.http.{Http, HttpResponse}

import scala.util.parsing.json.JSON
import scalaj.http.{Http, HttpResponse}

object ScalaHttp {
    def main(args: Array[String]): Unit = {
        def get(url: String,i: Int) = Http(url).param("page",i.toString)
        for(i <- 1 to 15 by 1) {
            var jsonFile = get("url",i).asString
            println(jsonFile)
        }
    }
}

The data comes in pages so I looped through all the pages manually from 1 to 15 and each page returns one element give below. When I print the string:L jsonFile, I see the string in below format:

HttpResponse({"run_sessions":[{"id":9003843,"start_time":"2012-02-22T10:59:06.000Z","end_time":"2012-02-22T11:52:43.000Z","duration":3217769,"distance":13644,"encoded_trace":null,"sport_type_id":3},{"id":9000024,"start_time":"2012-02-22T09:12:51.000Z","end_time":"2012-02-22T18:49:26.000Z","duration":7009,"distance":0,"encoded_trace":null,"sport_type_id":7},{"id":9003605,"start_time":"2012-02-21T12:21:00.000Z","end_time":"2012-02-21T12:43:47.000Z","duration":1367000,"distance":2600,"encoded_trace":"kd}wHuo~n@?fDlCbG?vE{@|GfB|FmAjHzCtIzBmEhAgGcE}DuDyEuE}DaCeEAsHjDSrBnDlBaA_EuGf@aEGjD","sport_type_id":1},{"id":9003604,"start_time":"2012-02-21T12:21:00.000Z","end_time":"2012-02-21T12:44:02.000Z","duration":1382000,"distance":2600,"encoded_trace":"gd}wHiq~n@_@hDvDpGe@nEi@tG~C|FgDtFxCjKvCaB`CqFsEuEgDcFkEsCaCyH{@}D|CmBrBhCxCp@oE}Hb@wEDn@","sport_type_id":1},{"id":9003952,"start_time":"2012-02-21T12:15:00.000Z","end_time":"2012-02-21T12:59:59.000Z","duration":2699120,"distance":6990,"encoded_trace":"ktcsGi~x]{@]rD~@{Jt@k@jI{BfJqJ{a@f@xa@}CmGsHa\\\\KhJsD}CaA}MrO{`@cCrL|Iub@hCsJvAyClB}DxAqD`EtA}End@rCtFdKiQbCdAbDaH~B}FjAlDbGlCvMmCyLf\\\\?nEnAhL{B|H}@hEvWiPqBbEan@|\\\\h@oDqBrCuDgILaHhBeFzGgFxE|@pB|BdBnCl@rC{Bt@qB~BJnG}@tA","sport_type_id":1},{"id":9004251,"start_time":"2012-02-21T12:07:13.000Z","end_time":"2012-02-21T14:38:45.000Z","duration":7820873,"distance":54670,"encoded_trace":"ybtzHqgx_@ifAp}Bw^n}B{Dl{DhBlqDqzCvi@aWdaDtf@~tCru@x~CdL~mExYjuEhoBqNvlC{gAbtA`mAxByyCx@{eFm`@wuF_j@elGiMqeG_k@a{E_y@w`D","sport_type_id":4},{"id":9004249,"start_time":"2012-02-21T12:07:04.000Z","end_time":"2012-02-21T13:41:35.000Z","duration":5676621,"distance":8909,"encoded_trace":"irveHulcvAMP{CzWiGvEyEtCs@uHiDzIqBfH{ErH{ExD{HuBgFvA{Dr@o@jH}D`GqFpE}GeBvAmExBqFjOcBRzDkEvFeH`GgGy@n@iIdEmHtO`@uGxLcL|EaC_GjDkFxMaF`DxDiErGkGhFsFVk@qHxCqF`QaGnHgCfEjAdGB|FoDlDgFbCgIpBcGrBJrArFxAkIhGuCzDa@?yU","sport_type_id":2},{"id":9004252,"start_time":"2012-02-21T12:07:00.000Z","end_time":null,"duration":0,"distance":0,"encoded_trace":null,"sport_type_id":1},{"id":9004245,"start_time":"2012-02-21T12:06:51.000Z","end_time":"2012-02-21T12:39:51.000Z","duration":1760262,"distance":4579,"encoded_trace":"axfvBrsr|Q?GTeCp@_EdBkD|@uD\\\\sDVuA}@`DWpDs@nDiAzCaAvDIn@r@oDhAmDdAsDd@cDb@}CJ_Aq@~Da@`Di@lDyArCq@dDSlBj@iDr@{CzA_Et@cEDaC`AqCeAxC?zBu@pCq@rCsAxCk@rCOfAl@aDbAwDrA_Dp@iDV}CRiAq@|De@rDk@zCkAnC_AhDSdC","sport_type_id":1},{"id":9004243,"start_time":"2012-02-21T12:06:48.000Z","end_time":"2012-02-21T13:05:57.000Z","duration":3547966,"distance":8096,"encoded_trace":"ckrtGs_ew@cZ_R_]gXg\\\\hAaJu@iBwJ_N{OuHuGiE{XKgNlCcLkAhLNbN`Kt_@dQxSnFnMzL}UfOxL`f@da@|VdV??","sport_type_id":1},{"id":9004239,"start_time":"2012-02-21T12:06:48.000Z","end_time":"2012-02-21T14:53:22.000Z","duration":9985106,"distance":13048,"encoded_trace":null,"sport_type_id":2},{"id":9004238,"start_time":"2012-02-21T12:06:47.000Z","end_time":"2012-02-21T12:21:38.000Z","duration":891191,"distance":2721,"encoded_trace":"u{ckGiy`LBHPjBHrBpAxAPnBIdC]xCU`CVpBF~BLnBpArA|ApAjAj@lAn@hBj@~A_@lBKbAmBb@eB?aCEgA}Aw@w@NiA]iAOuAF{Bp@kA`BX|B^~BxAvAxAp@jBi@`@iDb@wCmAs@}AYQaAL{Bd@uBVyCL{CY}AyAAuAKiBs@}AgA}@uAoAcB]g@","sport_type_id":1},{"id":9004232,"start_time":"2012-02-21T12:06:34.000Z","end_time":"2012-02-21T12:08:16.000Z","duration":101937,"distance":845,"encoded_trace":null,"sport_type_id":9},{"id":9004230,"start_time":"2012-02-21T12:06:30.000Z","end_time":null,"duration":0,"distance":0,"encoded_trace":null,"sport_type_id":1},{"id":9004226,"start_time":"2012-02-21T12:06:18.000Z","end_time":null,"duration":0,"distance":0,"encoded_trace":null,"sport_type_id":5}],"meta":{"pagination":{"per_page":15,"available_pages":71,"total":1059,"page":"1","sort_by":"start_time","order":"desc"}}},200,Map(Cache-Control -> Vector(max-age=0, private, must-revalidate), Connection -> Vector(keep-alive), Content-Length -> Vector(3727), Content-Type -> Vector(application/json; charset=utf-8), Date -> Vector(Tue, 01 Oct 2019 11:44:24 GMT), Etag -> Vector("2269df166d2348a8adc43b8170651bc8"), Server -> Vector(WEBrick/1.3.1 (Ruby/1.9.3/2014-05-14)), Set-Cookie -> Vector(request_method=GET; path=/), Status -> Vector(HTTP/1.1 200 OK), Via -> Vector(1.1 vegur), X-Content-Type-Options -> Vector(nosniff), X-Frame-Options -> Vector(SAMEORIGIN), X-Request-Id -> Vector(321da733-1172-4547-90a2-42d5d3b027fa), X-Runtime -> Vector(0.068370), X-Ua-Compatible -> Vector(chrome=1), X-Xss-Protection -> Vector(1; mode=block)))

Libraries used:

name := "ScalaRest"

version := "0.1"

scalaVersion := "2.11.8"
libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.3.0"

It has Maps, Sets in the string which I don't understand how to parse. From the above string which is in JSON format, how can I parse the data and extract data of the elements: id, starttime, endtime, duration

3
  • What have you tried/code? Which lib do you use? Commented Oct 1, 2019 at 12:04
  • Using scalaJ library. I have updated the question with the contents of build.sbt file Commented Oct 1, 2019 at 12:08
  • 2
    scala.util.parsing.json has been deprecated for more than 3 years now (for very good reasons). I would recommend you to use an appropriate library like Circe, json4s, play-json, uJson, etc. Commented Oct 1, 2019 at 12:12

3 Answers 3

3

You can try uJson, which is very fast and intuitive. No need for dedicated classes or implicit parsers. I have used it in multiple projects:

val json = ujson.read(Http("my_url").asString.body))
val tuples = json("run_sessions").arr /* <-- run_sessions is an array */ .map { item => 
    (item("id"), item("start_time"), item("end_time"), item("duration")) 
}
Sign up to request clarification or add additional context in comments.

3 Comments

+1 hat's a nice solution. You should add the imports and so on. Make a scalafiddle out of it too and show a runnable test version of it :D
-1 because uJson has not fixed security vulnerability: reddit.com/r/scala/comments/dbmetd/… - much more safer and efficient option would be using of Dijon 0.3.0: github.com/pathikrit/dijon
haha you're ruthless. Would you mind linking what the security issue is? Also if you're going to propose a solution as better, would you mind using the above example and show how it's done using this library? If it's less code and a better solution, it would be nice to see. EDIT: Nevermind, see you wrote an answer now.
1

Using play.api.libs.json._ You can do it through implicits and case classes

Define the case-class like this:

import play.api.libs.json._

 case class Run_sessions(
  id: Double,
  start_time: String,
  end_time: Option[String],
  duration: Double,
  distance: Double,
  encoded_trace: Option[String],
  sport_type_id: Double
)
case class Pagination(
  per_page: Double,
  available_pages: Double,
  total: Double,
  page: String,
  sort_by: String,
  order: String
)
case class MetaBis(
  pagination: Pagination
)
case class RootJsonObject(
  run_sessions: List[Run_sessions],
  meta: MetaBis
)

Define some implicit Formats for the case classes:

object formatters {
implicit val a: Format[Run_sessions] = Json.format[Run_sessions]
implicit val b: Format[Pagination] = Json.format[Pagination]
implicit val c: Format[MetaBis] = Json.format[MetaBis]
implicit val d: Format[RootJsonObject] = Json.format[RootJsonObject]
}

Use validate to create the case-class from the Json

val json = Json.parse("""{

  "run_sessions": [
    {
      "id": 9003843,
      "start_time": "2012-02-22T10:59:06.000Z",
      "end_time": "2012-02-22T11:52:43.000Z",
      "duration": 3217769,
      "distance": 13644,
      "encoded_trace": null,
      "sport_type_id": 3
    },
    {
      "id": 9000024,
      "start_time": "2012-02-22T09:12:51.000Z",
      "end_time": "2012-02-22T18:49:26.000Z",
      "duration": 7009,
      "distance": 0,
      "encoded_trace": null,
      "sport_type_id": 7
    },
    {
      "id": 9003605,
      "start_time": "2012-02-21T12:21:00.000Z",
      "end_time": "2012-02-21T12:43:47.000Z",
      "duration": 1367000,
      "distance": 2600,
      "encoded_trace": "kd}wHuo~n@?fDlCbG?vE{@|GfB|FmAjHzCtIzBmEhAgGcE}DuDyEuE}DaCeEAsHjDSrBnDlBaA_EuGf@aEGjD",
      "sport_type_id": 1
    },
    {
      "id": 9003604,
      "start_time": "2012-02-21T12:21:00.000Z",
      "end_time": "2012-02-21T12:44:02.000Z",
      "duration": 1382000,
      "distance": 2600,
      "encoded_trace": "gd}wHiq~n@_@hDvDpGe@nEi@tG~C|FgDtFxCjKvCaB`CqFsEuEgDcFkEsCaCyH{@}D|CmBrBhCxCp@oE}Hb@wEDn@",
      "sport_type_id": 1
    },
    {
      "id": 9003952,
      "start_time": "2012-02-21T12:15:00.000Z",
      "end_time": "2012-02-21T12:59:59.000Z",
      "duration": 2699120,
      "distance": 6990,
      "encoded_trace": "ktcsGi~x]{@]rD~@{Jt@k@jI{BfJqJ{a@f@xa@}CmGsHa\\\\KhJsD}CaA}MrO{`@cCrL|Iub@hCsJvAyClB}DxAqD`EtA}End@rCtFdKiQbCdAbDaH~B}FjAlDbGlCvMmCyLf\\\\?nEnAhL{B|H}@hEvWiPqBbEan@|\\\\h@oDqBrCuDgILaHhBeFzGgFxE|@pB|BdBnCl@rC{Bt@qB~BJnG}@tA",
      "sport_type_id": 1
    },
    {
      "id": 9004251,
      "start_time": "2012-02-21T12:07:13.000Z",
      "end_time": "2012-02-21T14:38:45.000Z",
      "duration": 7820873,
      "distance": 54670,
      "encoded_trace": "ybtzHqgx_@ifAp}Bw^n}B{Dl{DhBlqDqzCvi@aWdaDtf@~tCru@x~CdL~mExYjuEhoBqNvlC{gAbtA`mAxByyCx@{eFm`@wuF_j@elGiMqeG_k@a{E_y@w`D",
      "sport_type_id": 4
    },
    {
      "id": 9004249,
      "start_time": "2012-02-21T12:07:04.000Z",
      "end_time": "2012-02-21T13:41:35.000Z",
      "duration": 5676621,
      "distance": 8909,
      "encoded_trace": "irveHulcvAMP{CzWiGvEyEtCs@uHiDzIqBfH{ErH{ExD{HuBgFvA{Dr@o@jH}D`GqFpE}GeBvAmExBqFjOcBRzDkEvFeH`GgGy@n@iIdEmHtO`@uGxLcL|EaC_GjDkFxMaF`DxDiErGkGhFsFVk@qHxCqF`QaGnHgCfEjAdGB|FoDlDgFbCgIpBcGrBJrArFxAkIhGuCzDa@?yU",
      "sport_type_id": 2
    },
    {
      "id": 9004252,
      "start_time": "2012-02-21T12:07:00.000Z",
      "end_time": null,
      "duration": 0,
      "distance": 0,
      "encoded_trace": null,
      "sport_type_id": 1
    },
    {
      "id": 9004245,
      "start_time": "2012-02-21T12:06:51.000Z",
      "end_time": "2012-02-21T12:39:51.000Z",
      "duration": 1760262,
      "distance": 4579,
      "encoded_trace": "axfvBrsr|Q?GTeCp@_EdBkD|@uD\\\\sDVuA}@`DWpDs@nDiAzCaAvDIn@r@oDhAmDdAsDd@cDb@}CJ_Aq@~Da@`Di@lDyArCq@dDSlBj@iDr@{CzA_Et@cEDaC`AqCeAxC?zBu@pCq@rCsAxCk@rCOfAl@aDbAwDrA_Dp@iDV}CRiAq@|De@rDk@zCkAnC_AhDSdC",
      "sport_type_id": 1
    },
    {
      "id": 9004243,
      "start_time": "2012-02-21T12:06:48.000Z",
      "end_time": "2012-02-21T13:05:57.000Z",
      "duration": 3547966,
      "distance": 8096,
      "encoded_trace": "ckrtGs_ew@cZ_R_]gXg\\\\hAaJu@iBwJ_N{OuHuGiE{XKgNlCcLkAhLNbN`Kt_@dQxSnFnMzL}UfOxL`f@da@|VdV??",
      "sport_type_id": 1
    },
    {
      "id": 9004239,
      "start_time": "2012-02-21T12:06:48.000Z",
      "end_time": "2012-02-21T14:53:22.000Z",
      "duration": 9985106,
      "distance": 13048,
      "encoded_trace": null,
      "sport_type_id": 2
    },
    {
      "id": 9004238,
      "start_time": "2012-02-21T12:06:47.000Z",
      "end_time": "2012-02-21T12:21:38.000Z",
      "duration": 891191,
      "distance": 2721,
      "encoded_trace": "u{ckGiy`LBHPjBHrBpAxAPnBIdC]xCU`CVpBF~BLnBpArA|ApAjAj@lAn@hBj@~A_@lBKbAmBb@eB?aCEgA}Aw@w@NiA]iAOuAF{Bp@kA`BX|B^~BxAvAxAp@jBi@`@iDb@wCmAs@}AYQaAL{Bd@uBVyCL{CY}AyAAuAKiBs@}AgA}@uAoAcB]g@",
      "sport_type_id": 1
    },
    {
      "id": 9004232,
      "start_time": "2012-02-21T12:06:34.000Z",
      "end_time": "2012-02-21T12:08:16.000Z",
      "duration": 101937,
      "distance": 845,
      "encoded_trace": null,
      "sport_type_id": 9
    },
    {
      "id": 9004230,
      "start_time": "2012-02-21T12:06:30.000Z",
      "end_time": null,
      "duration": 0,
      "distance": 0,
      "encoded_trace": null,
      "sport_type_id": 1
    },
    {
      "id": 9004226,
      "start_time": "2012-02-21T12:06:18.000Z",
      "end_time": null,
      "duration": 0,
      "distance": 0,
      "encoded_trace": null,
      "sport_type_id": 5
    }
  ],
  "meta": {
    "pagination": {
      "per_page": 15,
      "available_pages": 71,
      "total": 1059,
      "page": "1",
      "sort_by": "start_time",
      "order": "desc"
    }
  }
}""")

  import formatters._
  println(
    json.validate[RootJsonObject]
  )

Here's a Scalafiddle with showing how to do it, I added Option's to some fields that are sometimes missing. Hope it helps https://scalafiddle.io/sf/J5dDfFo/3

2 Comments

And of course, one your parse it, you can reach the fields inside the json object easily by for example .sport_type.id and so on.
-1

Most safe and efficient way to parse the body of that HTTP response is using of jsoniter-scala.

1) Add dependencies:

libraryDependencies ++= Seq(
  "com.github.plokhotnyuk.jsoniter-scala" %% "jsoniter-scala-core"   % "0.55.4" % Compile,
  "com.github.plokhotnyuk.jsoniter-scala" %% "jsoniter-scala-macros" % "0.55.4" % Provided // required only in compile-time
)

2) Define data structures, derive codec for the root structure and parse the response body:

import java.time.Instant

import com.github.plokhotnyuk.jsoniter_scala.macros._
import com.github.plokhotnyuk.jsoniter_scala.core._

case class Response(
  run_sessions: List[RunSession],
  meta: Meta)

case class RunSession(
  id: Int,
  start_time: Instant,
  end_time: Option[Instant],
  duration: Int,
  distance: Int,
  encoded_trace: Option[String],
  sport_type_id: Int)

case class Meta(pagination: Pagination)

case class Pagination(
  per_page: Int,
  available_pages: Int,
  total: Int,
  @stringified page: Int,
  sort_by: String,
  order: String)

implicit val codec: JsonValueCodec[Response] = JsonCodecMaker.make(CodecMakerConfig())

val body: Array[Byte] = """{"run_sessions":[{"id":9003843,"start_time":"2012-02-22T10:59:06.000Z","end_time":"2012-02-22T11:52:43.000Z","duration":3217769,"distance":13644,"encoded_trace":null,"sport_type_id":3},{"id":9000024,"start_time":"2012-02-22T09:12:51.000Z","end_time":"2012-02-22T18:49:26.000Z","duration":7009,"distance":0,"encoded_trace":null,"sport_type_id":7},{"id":9003605,"start_time":"2012-02-21T12:21:00.000Z","end_time":"2012-02-21T12:43:47.000Z","duration":1367000,"distance":2600,"encoded_trace":"kd}wHuo~n@?fDlCbG?vE{@|GfB|FmAjHzCtIzBmEhAgGcE}DuDyEuE}DaCeEAsHjDSrBnDlBaA_EuGf@aEGjD","sport_type_id":1},{"id":9003604,"start_time":"2012-02-21T12:21:00.000Z","end_time":"2012-02-21T12:44:02.000Z","duration":1382000,"distance":2600,"encoded_trace":"gd}wHiq~n@_@hDvDpGe@nEi@tG~C|FgDtFxCjKvCaB`CqFsEuEgDcFkEsCaCyH{@}D|CmBrBhCxCp@oE}Hb@wEDn@","sport_type_id":1},{"id":9003952,"start_time":"2012-02-21T12:15:00.000Z","end_time":"2012-02-21T12:59:59.000Z","duration":2699120,"distance":6990,"encoded_trace":"ktcsGi~x]{@]rD~@{Jt@k@jI{BfJqJ{a@f@xa@}CmGsHa\\\\KhJsD}CaA}MrO{`@cCrL|Iub@hCsJvAyClB}DxAqD`EtA}End@rCtFdKiQbCdAbDaH~B}FjAlDbGlCvMmCyLf\\\\?nEnAhL{B|H}@hEvWiPqBbEan@|\\\\h@oDqBrCuDgILaHhBeFzGgFxE|@pB|BdBnCl@rC{Bt@qB~BJnG}@tA","sport_type_id":1},{"id":9004251,"start_time":"2012-02-21T12:07:13.000Z","end_time":"2012-02-21T14:38:45.000Z","duration":7820873,"distance":54670,"encoded_trace":"ybtzHqgx_@ifAp}Bw^n}B{Dl{DhBlqDqzCvi@aWdaDtf@~tCru@x~CdL~mExYjuEhoBqNvlC{gAbtA`mAxByyCx@{eFm`@wuF_j@elGiMqeG_k@a{E_y@w`D","sport_type_id":4},{"id":9004249,"start_time":"2012-02-21T12:07:04.000Z","end_time":"2012-02-21T13:41:35.000Z","duration":5676621,"distance":8909,"encoded_trace":"irveHulcvAMP{CzWiGvEyEtCs@uHiDzIqBfH{ErH{ExD{HuBgFvA{Dr@o@jH}D`GqFpE}GeBvAmExBqFjOcBRzDkEvFeH`GgGy@n@iIdEmHtO`@uGxLcL|EaC_GjDkFxMaF`DxDiErGkGhFsFVk@qHxCqF`QaGnHgCfEjAdGB|FoDlDgFbCgIpBcGrBJrArFxAkIhGuCzDa@?yU","sport_type_id":2},{"id":9004252,"start_time":"2012-02-21T12:07:00.000Z","end_time":null,"duration":0,"distance":0,"encoded_trace":null,"sport_type_id":1},{"id":9004245,"start_time":"2012-02-21T12:06:51.000Z","end_time":"2012-02-21T12:39:51.000Z","duration":1760262,"distance":4579,"encoded_trace":"axfvBrsr|Q?GTeCp@_EdBkD|@uD\\\\sDVuA}@`DWpDs@nDiAzCaAvDIn@r@oDhAmDdAsDd@cDb@}CJ_Aq@~Da@`Di@lDyArCq@dDSlBj@iDr@{CzA_Et@cEDaC`AqCeAxC?zBu@pCq@rCsAxCk@rCOfAl@aDbAwDrA_Dp@iDV}CRiAq@|De@rDk@zCkAnC_AhDSdC","sport_type_id":1},{"id":9004243,"start_time":"2012-02-21T12:06:48.000Z","end_time":"2012-02-21T13:05:57.000Z","duration":3547966,"distance":8096,"encoded_trace":"ckrtGs_ew@cZ_R_]gXg\\\\hAaJu@iBwJ_N{OuHuGiE{XKgNlCcLkAhLNbN`Kt_@dQxSnFnMzL}UfOxL`f@da@|VdV??","sport_type_id":1},{"id":9004239,"start_time":"2012-02-21T12:06:48.000Z","end_time":"2012-02-21T14:53:22.000Z","duration":9985106,"distance":13048,"encoded_trace":null,"sport_type_id":2},{"id":9004238,"start_time":"2012-02-21T12:06:47.000Z","end_time":"2012-02-21T12:21:38.000Z","duration":891191,"distance":2721,"encoded_trace":"u{ckGiy`LBHPjBHrBpAxAPnBIdC]xCU`CVpBF~BLnBpArA|ApAjAj@lAn@hBj@~A_@lBKbAmBb@eB?aCEgA}Aw@w@NiA]iAOuAF{Bp@kA`BX|B^~BxAvAxAp@jBi@`@iDb@wCmAs@}AYQaAL{Bd@uBVyCL{CY}AyAAuAKiBs@}AgA}@uAoAcB]g@","sport_type_id":1},{"id":9004232,"start_time":"2012-02-21T12:06:34.000Z","end_time":"2012-02-21T12:08:16.000Z","duration":101937,"distance":845,"encoded_trace":null,"sport_type_id":9},{"id":9004230,"start_time":"2012-02-21T12:06:30.000Z","end_time":null,"duration":0,"distance":0,"encoded_trace":null,"sport_type_id":1},{"id":9004226,"start_time":"2012-02-21T12:06:18.000Z","end_time":null,"duration":0,"distance":0,"encoded_trace":null,"sport_type_id":5}],"meta":{"pagination":{"per_page":15,"available_pages":71,"total":1059,"page":"1","sort_by":"start_time","order":"desc"}}}""".getBytes("UTF-8")
val response: Response = readFromArray(body)

3) [Optional] Print the parsed result

print(response)

// Response(List(RunSession(9003843,2012-02-22T10:59:06Z,Some(2012-02-22T11:52:43Z),3217769,13644,None,3), RunSession(9000024,2012-02-22T09:12:51Z,Some(2012-02-22T18:49:26Z),7009,0,None,7), RunSession(9003605,2012-02-21T12:21:00Z,Some(2012-02-21T12:43:47Z),1367000,2600,Some(kd}wHuo~n@?fDlCbG?vE{@|GfB|FmAjHzCtIzBmEhAgGcE}DuDyEuE}DaCeEAsHjDSrBnDlBaA_EuGf@aEGjD),1), RunSession(9003604,2012-02-21T12:21:00Z,Some(2012-02-21T12:44:02Z),1382000,2600,Some(gd}wHiq~n@_@hDvDpGe@nEi@tG~C|FgDtFxCjKvCaB`CqFsEuEgDcFkEsCaCyH{@}D|CmBrBhCxCp@oE}Hb@wEDn@),1), RunSession(9003952,2012-02-21T12:15:00Z,Some(2012-02-21T12:59:59Z),2699120,6990,Some(ktcsGi~x]{@]rD~@{Jt@k@jI{BfJqJ{a@f@xa@}CmGsHa\\KhJsD}CaA}MrO{`@cCrL|Iub@hCsJvAyClB}DxAqD`EtA}End@rCtFdKiQbCdAbDaH~B}FjAlDbGlCvMmCyLf\\?nEnAhL{B|H}@hEvWiPqBbEan@|\\h@oDqBrCuDgILaHhBeFzGgFxE|@pB|BdBnCl@rC{Bt@qB~BJnG}@tA),1), RunSession(9004251,2012-02-21T12:07:13Z,Some(2012-02-21T14:38:45Z),7820873,54670,Some(ybtzHqgx_@ifAp}Bw^n}B{Dl{DhBlqDqzCvi@aWdaDtf@~tCru@x~CdL~mExYjuEhoBqNvlC{gAbtA`mAxByyCx@{eFm`@wuF_j@elGiMqeG_k@a{E_y@w`D),4), RunSession(9004249,2012-02-21T12:07:04Z,Some(2012-02-21T13:41:35Z),5676621,8909,Some(irveHulcvAMP{CzWiGvEyEtCs@uHiDzIqBfH{ErH{ExD{HuBgFvA{Dr@o@jH}D`GqFpE}GeBvAmExBqFjOcBRzDkEvFeH`GgGy@n@iIdEmHtO`@uGxLcL|EaC_GjDkFxMaF`DxDiErGkGhFsFVk@qHxCqF`QaGnHgCfEjAdGB|FoDlDgFbCgIpBcGrBJrArFxAkIhGuCzDa@?yU),2), RunSession(9004252,2012-02-21T12:07:00Z,None,0,0,None,1), RunSession(9004245,2012-02-21T12:06:51Z,Some(2012-02-21T12:39:51Z),1760262,4579,Some(axfvBrsr|Q?GTeCp@_EdBkD|@uD\\sDVuA}@`DWpDs@nDiAzCaAvDIn@r@oDhAmDdAsDd@cDb@}CJ_Aq@~Da@`Di@lDyArCq@dDSlBj@iDr@{CzA_Et@cEDaC`AqCeAxC?zBu@pCq@rCsAxCk@rCOfAl@aDbAwDrA_Dp@iDV}CRiAq@|De@rDk@zCkAnC_AhDSdC),1), RunSession(9004243,2012-02-21T12:06:48Z,Some(2012-02-21T13:05:57Z),3547966,8096,Some(ckrtGs_ew@cZ_R_]gXg\\hAaJu@iBwJ_N{OuHuGiE{XKgNlCcLkAhLNbN`Kt_@dQxSnFnMzL}UfOxL`f@da@|VdV??),1), RunSession(9004239,2012-02-21T12:06:48Z,Some(2012-02-21T14:53:22Z),9985106,13048,None,2), RunSession(9004238,2012-02-21T12:06:47Z,Some(2012-02-21T12:21:38Z),891191,2721,Some(u{ckGiy`LBHPjBHrBpAxAPnBIdC]xCU`CVpBF~BLnBpArA|ApAjAj@lAn@hBj@~A_@lBKbAmBb@eB?aCEgA}Aw@w@NiA]iAOuAF{Bp@kA`BX|B^~BxAvAxAp@jBi@`@iDb@wCmAs@}AYQaAL{Bd@uBVyCL{CY}AyAAuAKiBs@}AgA}@uAoAcB]g@),1), RunSession(9004232,2012-02-21T12:06:34Z,Some(2012-02-21T12:08:16Z),101937,845,None,9), RunSession(9004230,2012-02-21T12:06:30Z,None,0,0,None,1), RunSession(9004226,2012-02-21T12:06:18Z,None,0,0,None,5)),Meta(Pagination(15,71,1059,1,start_time,desc)))

1 Comment

Would you mind explaining why this is better or more efficient than using play.api.libs.json._ other than that of course play is super heavy and annoying to import etc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.