JSON in API v1
JSON in API v1
DSP-API v1 parses and generates JSON using the spray-json library.
The triplestore returns results in JSON, and these are parsed into
SparqlSelectResponse
objects in the store
package (by SparqlUtils
,
which can be used by any actor in that package). A
SparqlSelectResponse
has a structure that's very close to the JSON
returned by a triplestore via the SPARQL 1.1
Protocol: it contains a header
(listing the variables that were used in the query) and a body
(containing rows of query results). Each row of query results is
represented by a VariableResultsRow
, which contains a Map[String,
String]
of variable names to values.
The Jsonable
trait marks classes that can convert themselves into
spray-json AST objects when you call their toJsValue
method; it
returns a JsValue
object, which can then be converted to text by
calling its prettyPrint
or compactPrint
methods. Case classes
representing complete API responses extend the KnoraResponseV1
trait,
which extends Jsonable
. Case classes representing Knora values extend
the ApiValueV1
trait, which also extends Jsonable
. To make the
responders reusable, the JSON for API responses is generated only at the
last moment, by the RouteUtilV1.runJsonRoute()
function.