 <p>My suggestion: don't take this approach. It feels dirty. Go back to the drawing board if you can.</p> <p>With that in mind, you won't be able to interject a merge like you want with the existing JSON marshalling support in Spray. You'll need to stitch it together yourself. Something like this should at least point you in the right direction (provided it be the direction you must go):</p> <pre><code>import org.json4s.JsonAST._ import org.json4s.JsonDSL._ def mergedParametersAndEntity[T](implicit m:Manifest[T]): Directive1[T] = { entity(as[JObject]).flatMap { jObject =&gt; parameterMap flatMap { params =&gt; val left = JObject(params.mapValues { v =&gt; JString(v) }.toSeq : _*) provide(left.merge(jObject).extract[T]) } } } </code></pre>