Hi Benjamin,
I don't have a lot of experience with Spray itself, so you might have to help me along with any Spray specifics...
First of all, just to make sure we're on the same page, I guess you've seen that Rapture JSON works with multiple backends, one of which is Spray JSON. That doesn't actually have a lot to do with any other part of Spray, so you could quite happily use Rapture JSON with a different backend (e.g. Jackson or Jawn) with Spray.
The examples from the Rapture JSON Github page are equally applicable to all backends.
However, one good reason for using Rapture JSON with the Spray backend is that you are already using Spray JSON, i.e. you already have JSON objects created directly by Spray. So, if you have some JSON values from Spray, e.g. an instance of `spray.json.JsObject`, you can convert that directly into a Rapture JSON value just by wrapping it in `Json(...)`, e.g.
val mySprayJsObject: JsObject = ...
val myRaptureJsonObject: Json = Json(mySprayObject)
You can then use all the Rapture JSON features on this new object.
Conversely, if you've got an existing Rapture JSON value, and you want to convert it to a native Spray JSON object, you can call `myRaptureJsonObject.as[JsValue]` or `myRaptureJsonObject.as[JsObject]` (depending on which type you want).
Both of these conversions are constant time operations, assuming you're using a matching backend (which you are, here).
Going back to your example, first of all, you should import `rapture.json._` as well as `jsonBackends.spray._`. It looks like you've tried to call the value `sprayJsValueExtractor` directly, which you should never need to do. It's an implicit, so it will get resolved when it's required.
I'm not sure how the `entity` directive works here, but if you give me a bit more detail on what you're trying to do, I'd be happy to explain it!
Good luck!
Jon